導航:首頁 > 版本升級 > handlebars文件引入

handlebars文件引入

發布時間:2021-02-21 11:37:58

1. handlebars.js怎樣導入使用

Handlebars 是 javaScript 一個抄語義模板庫,通過對襲view和data的分離來快速構建Web模板。它採用"Logic-less template"(無邏輯模版)的思路,在載入時被預編譯,而不是到了客戶端執行到代碼時再去編譯, 這樣可以保證模板載入和運行的速度。Handlebars兼容Mustache,你可以在Handlebars中導入Mustache模板。

2. nodejs express handlebars 搭建的web工程 怎麼寫離線manifest

1.自動更新:瀏覽器除了在第一次訪問 Web 應用時緩存資源外,只會在 cache manifest 文件本身發生變化版(即使是權注釋變化)時更新緩存。而 cache manifest 中的資源文件發生變化並不會觸發更新。
2.手動更新:開發者也可以使用 window.applicationCache 的介面更新緩存。方法是檢測 window.applicationCache.status 的值,如果是 UPDATEREADY,那麼可以調用 window.applicationCache.update() 更新緩存。

3. MVC中加入handlebars模板,後再模板中使用@html.raw無效怎麼解決在線等.....

Handlebars 是 JavaScript 一個語義模板庫,通過對view和data的分離來快速構建web模板。它採用"Logic-less template"(無邏輯模版)的思路,在載入時被預編譯,而不是到了客戶端執行到代碼時再去編譯,
這樣可以保證模板載入和運行的速度。Handlebars兼容Mustache,你可以在Handlebars中導入Mustache模板。
使用與安裝
Handlebars的安裝非常簡單,你只需要從github下載最新版本,你也可訪問下面網址獲取最新信息:http://handlebarsjs.com。
目前handlebars.JS已經被許多項目廣泛使用了,handlebars是一個純js庫,因此你可以像使用其他JS腳本一樣用script標簽來包含handlebars.js
<script type="text/javascript" src=".js/handlebars.js"></script>

基本語法
Handlebars expressions 是handlebars模板中最基本的單元,使用方法是加兩個花括弧{{value}}, handlebars模板會自動匹配相應的數值,對象甚至是函數。
例如:
<div class="demo">
<h1>{{name}}</h1>
<p>{{content}}</p>
</div>

你可以單獨建立一個模板,ID(或者class)和type很重要,因為你要用他們來獲取模板內容
例如:
<script id="tpl" type="text/x-handlebars-template">
<div class="demo">
<h1>{{title}}</h1>
<p>{{content.title}}</p>
</div>
</script>

handlebars會根據上下文來自動對表達式進行匹配,如果匹配項是個變數,則會輸出變數的值,如果匹配項是個函數,則函數會被調用。
如果沒找到匹配項,則沒有輸出。表達式也支持點操作符,因此你可以使用{{content.title}}這樣的形式來調用嵌套的值或者方法,
handlebars會根據當前上下文輸出content變數的title屬性的值。
在JavaScript中,使用Handlebars.compile()方法來預編譯模板
例如:(這是一套規則)
//用jquery獲取模板
var tpl = $("#tpl").html();
//原生方法
var source = document.getElementById('#tpl').innerHTML;
//預編譯模板
var template = Handlebars.compile(source);
//模擬json數據
var context = { name: "zhaoshuai", content: "learn Handlebars"};
//匹配json內容
var html = template(context);
//輸入模板
$(body).html(html);

Handlebar的表達式
Block表達式
有時候當你需要對某條表達式進行更深入的操作時,Blocks就派上用場了,在Handlebars中,你可以在表達式後面跟隨一個#號來表示Blocks,然後通過{{/表達式}}來結束Blocks。
如果當前的表達式是一個數組,則Handlebars會「自動展開數組」,並將Blocks的上下文設為數組中的元素。
例如:
<ul>
{{#programme}}
<li>{{language}}</li>
{{/programme}}
</ul>

有以下JSON數據
{
programme: [
{language: "JavaScript"},
{language: "HTML"},
{language: "CSS"}
]
}

編譯模板代碼同上……
上面的代碼會自動匹配programme數據並展開數據,渲染DOM後就是這樣的
<ul>
<li>JavaScript</li>
<li>HTML</li>
<li>CSS</li>
</ul>

Handlebars的內置塊表達式(Block helper)
1.each block helper
你可以使用內置的{{#each}} helper遍歷列表塊內容,用this來引用遍歷的元素
例如:
<ul>
{{#each name}}
<li>{{this}}</li>
{{/each}}
</ul>

對應適用的json數據
{
name: ["html","css","javascript"]
};

這里的this指的是數組里的每一項元素,和上面的Block很像,但原理是不一樣的這里的name是數組,而內置的each就是為了遍歷數組用的,更復雜的數據也同樣適用。
2.if else block helper
{{#if}}就你使用JavaScript一樣,你可以指定條件渲染DOM,如果它的參數返回false,undefined, null, "" 或者 [] (a "falsy" value),
Handlebar將不會渲染DOM,如果存在{{#else}}則執行{{#else}}後面的渲染
例如:
{{#if list}}
<ul id="list">
{{#each list}}
<li>{{this}}</li>
{{/each}}
</ul>
{{else}}
<p>{{error}}</p>
{{/if}}

對應適用json數據
var data = {
info:['HTML5','CSS3',"WebGL"],
"error":"數據取出錯誤"
}

這里{{#if}}判斷是否存在list數組,如果存在則遍歷list,如果不存在輸出錯誤信息
3.unless block helper
{{#unless}}這個語法是反向的if語法也就是當判斷的值為false時他會渲染DOM
例如:
{{#unless data}}
<ul id="list">
{{#each list}}
<li>{{this}}</li>
{{/each}}
</ul>
{{else}}
<p>{{error}}</p>
{{/unless}}

4.with block helper
{{#with}}一般情況下,Handlebars模板會在編譯的階段的時候進行context傳遞和賦值。使用with的方法,我們可以將context轉移到數據的一個section裡面(如果你的數據包含section)。
這個方法在操作復雜的template時候非常有用。
<div class="entry">
<h1>{{title}}</h1>
{{#with author}}
<h2>By {{firstName}} {{lastName}}</h2>
{{/with}}
</div>

對應適用json數據
{
title: "My first post!",
author: {
firstName: "Charles",
lastName: "Jolley"
}
}

Handlebar的注釋(comments)
Handlebars也可以使用注釋寫法如下
{{! handlebars comments }}

Handlebars的訪問(Path)
Handlebar支持路徑和mustache,Handlebar還支持嵌套的路徑,使得能夠查找嵌套低於當前上下文的屬性
可以通過.來訪問屬性也可以使用../,來訪問父級屬性。
例如:(使用.訪問的例子)
<h1>{{author.id}}</h1>

對應json數據
{
title: "My First Blog Post!",
author: {
id: 47,
name: "Yehuda Katz"
},
body: "My first post. Wheeeee!"
};

例如:(使用../訪問)
{{#with person}}
<h1>{{../company.name}}</h1>
{{/with}}

對應適用json數據
{
"person":
{ "name": "Alan" },
company:
{"name": "Rad, Inc." }
};

自定義helper
Handlebars,可以從任何上下文可以訪問在一個模板,你可以使用Handlebars.registerHelper()方法來注冊一個helper。
調試技巧
把下面一段"debug helper"載入到你的JavaScript代碼里,然後在模板文件里通過{{debug}}或是{{debug someValue}}方便調試數據
Handlebars.registerHelper("debug", function(optionalValue) {
console.log("Current Context");
console.log("====================");
console.log(this);
if (optionalValue) {
console.log("Value");
console.log("====================");
console.log(optionalValue);
}
});

handlebars的jquery插件
(function($) {
var compiled = {};
$.fn.handlebars = function(template, data) {
if (template instanceof jQuery) {
template = $(template).html();
}
compiled[template] = Handlebars.compile(template);
this.html(compiled[template](data));
};
})(jQuery);
$('#content').handlebars($('#template'), { name: "Alan" });

4. ae 4 中 render seting 在cc2015中沒有

通過模板()將數據和 HTML 分離,這是 Web 組件的價值之一。用戶可以在不同的開發環境中使用 Web 組件。

純瀏覽器環境

Amaze UI 提供的開發模板中,包含一個 widget.html 文件,裡面展示了 Widget 在純瀏覽器環境中的使用。

要點如下:

引入 Handlebars 模板 handlebars.min.js;
引入 Amaze UI Widget helper amui.widget.helper.js;
根據需求編寫模板 <script type="text/x-handlebars-template" id="amz-tpl">{{>slider slider}}</script>;
傳入數據,編譯模板並插入頁面中。
Copy
$(function() {
var $tpl = $('#amz-tpl');
var source = $tpl.text();
var template = Handlebars.compile(source);
var data = {};
var html = template(data);

$tpl.before(html);
});
Node.js 環境

可以結合 Express.js、hbs 使用。

用戶了可以直接使用打包好的模塊 Amaze UI Widget hbs helper,example 里有完整的使用示例。

當然,你也可以自由調用:

首先,把 Web 組件的模板注冊為 partial。

5. handlebars.js 怎麼處理html

利用c++生成html文件,並通過html文件顯示源代碼。關鍵問題是進行編碼轉換,破壞html標簽的閉合屬性。這里只是轉換了字元'<'. char hhead[]=; char hend[]=; text=hhead+text+hend; int pos; while(pos!=-1) { pos=text.Find('<'); if(pos!=-1){ text.Delete(pos,1); text.Insert(pos,<); } } text.Format(%s,text); HANDLE hHugeFile; hHugeFile=CreateFile(F:\\報告.htm,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); //處理出錯的信息 if(hHugeFile==INVALID_HANDLE_VALUE) { // LPVOID StrInfo; // FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError(),MAKELANGID(LANG_NEUTRAL, // SUBLANG_DEFAULT),(LPTSTR)&StrInfo,0,NULL); // MessageBox(0,(lpctstr)StrInfo,信息提示,MB_OK|MB_ICONINFORMATION); } Dword Num; ::WriteFile(hHugeFile,text,strlen(text),&Num,NULL); ::CloseHandle(hHugeFile); ShellExecute(NULL,open,f:\\報告.htm,NULL,NULL,SW_SHOW);

6. 用handlebars.js引入的部分的css怎麼寫

.net中提供的母版頁大大的方便了製作網頁時候使得頁面共有元素統一化,給維護和修改提供了相當的便利。但是有一個讓人很惱火的缺點就是母版頁中才能有<head元素,使得很多情況下子頁面引用css或者js就不那麼方便。當然,你可以把css和js的引用全部放到母版頁中,但是這樣的做法會使得<head非常臃腫,是相當不理想的做法。這里介紹兩種簡單的方法,希望可以給碰到這個問題的朋友一點幫助,當然,如果您有更方便的做法,希望您可以告訴我,非常感謝呵呵。。。第一種方法:使用<asp:ScriptManagerProxy元素直接看代碼段: <%-- 這種方法是利用了ScriptManagerProxy控制項中Scripts來引用js --% <asp:ScriptManagerProxy ID="aa" runat="server" <Scripts <asp:ScriptReference Path="My97DatePicker/WdatePicker.js" / </Scripts </asp:ScriptManagerProxy 這里之所以要使用ScriptManagerProxy是因為使用母版頁時候要保證ScriptManager元素只有唯一一個,具體的就不多說了,MSDN查一下就明白了。這種方法我個人覺得要稍微麻煩點(要敲多點代碼),而且只能引用js,css無效。 ---------------------------------------------我是華麗的分割線------------------------------------- 第二種方法:使用<asp:ContentPlaceHolder元素母版頁中代碼段: <head runat="server" <titleTechMan</title <meta http-equiv="Content-Type" content="text/html; charset=utf-8" / <meta name="keywords" content="$頁面關鍵字$" / <meta name="description" content="$頁面描述$" / <asp:ContentPlaceHolder ID="cphHead" runat="server"</asp:ContentPlaceHolder</head 內容頁中代碼段:

7. 如何引入express4-handlebars

自動更新:瀏覽器除了在第一次訪問 Web 應用時緩存資源外,只會在 cache manifest 文件本身發生變化(即使內是注釋變化)時更新緩存容。而 cache manifest 中的資源文件發生變化並不會觸發更新。

閱讀全文

與handlebars文件引入相關的資料

熱點內容
網路中常用的傳輸介質 瀏覽:518
文件如何使用 瀏覽:322
同步推密碼找回 瀏覽:865
樂高怎麼才能用電腦編程序 瀏覽:65
本機qq文件為什麼找不到 瀏覽:264
安卓qq空間免升級 瀏覽:490
linux如何刪除模塊驅動程序 瀏覽:193
at89c51c程序 瀏覽:329
怎麼創建word大綱文件 瀏覽:622
裊裊朗誦文件生成器 瀏覽:626
1054件文件是多少gb 瀏覽:371
高州禁養區內能養豬多少頭的文件 瀏覽:927
win8ico文件 瀏覽:949
仁和數控怎麼編程 瀏覽:381
項目文件夾圖片 瀏覽:87
怎麼在東芝電視安裝app 瀏覽:954
plc顯示數字怎麼編程 瀏覽:439
如何辨別假網站 瀏覽:711
寬頻用別人的賬號密碼 瀏覽:556
新app如何佔有市場 瀏覽:42

友情鏈接