ホームページ >ウェブフロントエンド >htmlチュートリアル >静的ページを生成する 5 つの方法

静的ページを生成する 5 つの方法

高洛峰
高洛峰オリジナル
2016-12-19 09:10:531233ブラウズ

静的ページを生成する方法に関する 5 つのオプション

オプション 1:

/// <summary>
/// 传入URL返回网页的html代码
/// </summary>
/// <param name="Url">URL</param>
/// <returns></returns>
public static  string getUrltoHtml(string Url)
{
errorMsg = "";
try
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
// Get the response instance.
System.Net.WebResponse wResp =wReq.GetResponse();
// Read an HTTP-specific property
//if (wResp.GetType() ==HttpWebResponse)
//{
//DateTime updated  =((System.Net.HttpWebResponse)wResp).LastModified;
//}
// Get the response stream.
System.IO.Stream respStream  = wResp.GetResponseStream();
// Dim reader As StreamReader = New StreamReader(respStream)
System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));
return  reader.ReadToEnd();

}
catch(System.Exception ex)
{
errorMsg = ex.Message ;
}
return "";
}

この関数を使用して、Web ページのクライアント側 HTML コードを取得し、それを .html ファイルに保存できます。

オプション 2:

単一の静的ページを生成するのは難しくありません。特に、ページが頻繁に更新、変更、削除される場合に、各静的ページ間の関連付けとリンクを維持する方法が重要です。 Alibaba ページはすべて HTML で構成されており、アドレス マッピング機能が使用されていると推定されます。アドレス マッピングについては、http://www.easewe.com/Article/ShowArticle.aspx?article=131 を参照してください。このページを見て分析してください。彼の「入札カウントダウン」機能 http://info.china.alibaba.com/news/subject/v1-s5011580.html?head=top4&Bidding=home5

ASP.Net静的 HTML ページを生成します

静的ページの生成に使用される Asp FileSystemObject オブジェクトに実装されます

.Net では、このような操作は System.IO に含まれます

以下はプログラム コードです 注: このコードはオリジナルではありません

//生成HTML页
  public static bool WriteFile(string strText,string strContent,string strAuthor)
  {
   string path = HttpContext.Current.Server.MapPath("/news/");
   Encoding code = Encoding.GetEncoding("gb2312");
   // 读取模板文件
   string temp = HttpContext.Current.Server.MapPath("/news/text.html");
   StreamReader sr=null;
   StreamWriter sw=null;
   string str=""; 
   try
   {
    sr = new StreamReader(temp, code);
    str = sr.ReadToEnd(); // 读取文件
   }
   catch(Exception exp)
   {
    HttpContext.Current.Response.Write(exp.Message);
    HttpContext.Current.Response.End();
    sr.Close();
   }
   string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
   // 替换内容
   // 这时,模板文件已经读入到名称为str的变量中了
   str =str.Replace("ShowArticle",strText); //模板页中的ShowArticle
   str = str.Replace("biaoti",strText);
   str = str.Replace("content",strContent);
   str = str.Replace("author",strAuthor);
   // 写文件
   try
   {
    sw = new StreamWriter(path + htmlfilename , false, code);
    sw.Write(str);
    sw.Flush();
   }
   catch(Exception ex)
   {
    HttpContext.Current.Response.Write(ex.Message);
    HttpContext.Current.Response.End();
   }
   finally
   {
    sw.Close();
   }
   return true;

此函数放在Conn.CS基类中了在添加新闻的代码中引用 注:工程名为Hover

    if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))
    {
     Response.Write("添加成功");
    }
    else
    {
     Response.Write("生成HTML出错!");
    }

テンプレート ページ Text.html コード
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
  <title>ShowArticle</title>
   <body>
biaoti
<br>
content<br>
author
</body>
</HTML>
biaoti
<br>
content<br>
author
</body>
</HTML>

プロンプトが正常に追加されると、ファイル名として現在の時刻を持つ HTML ファイルが表示されます。実際のアプリケーションでは、上記は渡されたパラメーターを HTML ファイルに直接書き込むだけです。最初にデータベースを追加してから、HTML ファイルを記述する必要があります

オプション 3: クライアント参照 (SJ) の例を示します

その機能は、クライアントの方法で特定のページのコードを取得することです。この例では、直接出力されます

<script>
    var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    oXmlHttp.open("GET","http://www.webjx.com", false);
    oXmlHttp.send()
    var oStream = new ActiveXObject("ADODB.Stream");
    if(oStream == null)
        alert("您的机器不支持ADODB.Stream.")
    else
    {
        oStream.Type=1;
        oStream.Mode=3;
        oStream.Open() ;
        oStream.Write(oXmlHttp.responseBody);
        oStream.Position= 0;
        oStream.Type= 2;
        oStream.Charset="gb2312";
        var result= oStream.ReadText();
        oStream.Close();
        oStream = null;
        var aa = window.open("","")
        document.write(result);
        aa.document.write(result);
    }
</script>

オプション 4: csdn を学習する 同じです。データの保存には xml を使用します。テンプレート XSL にはファイルが 1 つだけあります。

xml を使用してデータを保存し、xsl を使用してテンプレートを定義し、データを生成します。データは、xsl を通じてクライアントまたはサービス セグメントに簡単に表示できます。静的なリーフ サーフェスを生成する場合は、さらに簡単になります。 .net XML クラス パッケージの問題を確認して解決してください。

利点: 必要な形式とコンテンツに簡単かつ迅速に変換できます。

短所: より多くのコンテンツを学ぶ必要があり、始めるのが難しい。

オプション 5:


アイデア 1:

1.

などのツールを使用して HTML 形式でテンプレートを生成し、書式設定を追加する必要がある特別なタグ ($htmlformat$ など) を追加し、動的にコード読み取りを使用します。ファイルの生成 このテンプレートを取得し、フロント デスクによって入力されたコンテンツを取得し、このテンプレートのマークされた位置に追加し、新しいファイル名を生成してディスクに書き込み、関連するデータをデータベースに書き込みます。

2. バックグラウンド コードを使用して HTML ファイルをハードコーディングします。HtmlTextWriter クラスを使用して HTML ファイルを作成できます。

利点:

1. js ファイルをインクルードし、document.write() メソッドを js ファイルに追加する方法を使用して、ページヘッダーや広告などのコンテンツをすべてに追加することで、非常に複雑なページを作成できます。ページ。

2. 静的 HTML ファイルは、MS Windows2000 のインデックス サーバーを使用して全文検索エンジンを構築し、asp.net を使用して DataTable の形式で検索結果を取得できます。 Win2000 の Index サービスが XML ファイルの内容を見つけることができません。データベース検索と索引索引二重検索が含まれている場合、この検索機能は非常に強力になります。

3. サーバーの負荷を節約します。静的 HTML ファイルをリクエストすると、aspx ファイルよりも多くのサーバー リソースが節約されます。

デメリット:

アイデア 2: ハードコーディングを使用する場合、作業負荷が非常に大きくなり、大量の HTML コードが必要になります。デバッグは難しいです。また、ハードコーディングで生成されたHTMLスタイルは変更することができず、Webサイトでスタイルを変更した場合には再コーディングする必要があり、後々の作業負担が大きくなります。

そこで最初のアイデアが採用されます

コードを表示

1. HTML テンプレート ページを定義します

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body >
<table $htmlformat[0] height="100%" border="0" width="100%" cellpadding="10" cellspacing ="0" bgcolor="#eeeeee" style="border:1px solid #000000">
<tr>
<td width="100%" valign="middle" align="left">
<span style="color: $htmlformat[1];font-size: $htmlformat[2]">$htmlformat[3]</span>
</td>
</tr>
</table>
</body>
</html>

2.asp.net コード:

//---------------------读html模板页面到stringbuilder对象里----

string[] format=new string[4];//定义和htmlyem标记数目一致的数组
StringBuilder htmltext=new StringBuilder();
try
{
    using (StreamReader sr = new StreamReader("存放模板页面的路径和页面名"))
    {
        String line;
        while ((line = sr.ReadLine()) != null)
        {
            htmltext.Append(line);
        }
        sr.Close();
    }

catch
{
    Response.Write("<Script>alert(&#39;读取文件错误&#39;)</Script>");

//---------------------给标记数组赋值------------
format[0]="background="/blog/bg.jpg"";//背景图片
format[1]= "#990099";//字体颜色
format[2]="150px";//字体大小
format[3]= "<marquee>生成的模板html页面</marquee>";//文字说
//----------替换htm里的标记为你想加的内容
for(int i=0;i<4;i++)
{
    htmltext.Replace("$htmlformat["+i+"]",format[i]);
}
//----------生成htm文件------------------――
try
{
    using(StreamWriter sw=new StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312")))    
    {
        sw.WriteLine(htmltext);
        sw.Flush();
        sw.Close();
    }
}
catch
{
    Response.Write ("The file could not be wirte:");
}

概要

この方法は HTML ファイルを生成するのに便利です。このプログラムはループ置換を使用するため、多数の要素を置換する必要があるテンプレートの場合は非常に高速です。



静的ページを生成する方法に関する 5 つのソリューションに関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。