seajs載入模板引擎實現前端模板化開發
文字外掛
在 JavaScript 中嵌入 HTML 模板很不方便,特別是當模板內容有多行時。有了 Sea.js, 一切迎刃而解。
首先,需要引入文字外掛:
<script src="path/to/sea.js"></script> <script src="path/to/seajs-text.js"></script>
也可以通過 preload
配置來引入。
載入模板字串
引入文字外掛後,就可以在模組中直接通過 require
來載入文字檔案了:
define(function(require) { // 獲取文字內容 var tpl =require('./a.tpl'); console.log(tpl); });
a.tpl
<div>I am {{name}}.</div>
除了 .tpl
字尾, 還可以使用 .html
字尾,或 text!
字首來指明文字檔案。
載入 Handlebars 模板並進行預編譯
對於 Handlebars 模板,在開發時我們可以讓編譯透明化。首先要配置 handlebars 的路徑:
seajs.config({ alias: { handlebars: 'gallery/handlebars/1.0.2/handlebars' } })
然後在模組程式碼中,就可以直接獲取編譯後的 handlebars 模組函數了:
var compiled = require('./a.handlebars') var html = compiled({foo: 'bar'})
載入 JSON 資料
除了載入模板等文字檔案,使用文字外掛還可以載入 JSON 資料:
a.json
{ "name": "Frank", "age": 30 }
define(function(require) { // 載入 json 資料 var data = require('./a.json'); console.log(data.name); });
除了 .json
字尾,還可以使用 json!
注意事項
-
Sea.js 通過 XHR 來載入文字檔案。受同源策略限制,在開發完成後,推薦通過構建工具將文字檔案轉換為 JS 程式碼。這樣,上線後就可以從任意域載入。
-
Sea.js 原生支援 css 檔案的載入,直接
require('path/to/file.css')
即可。
相關推薦
seajs載入模板引擎實現前端模板化開發
文字外掛 在 JavaScript 中嵌入 HTML 模板很不方便,特別是當模板內容有多行時。有了 Sea.js, 一切迎刃而解。 首先,需要引入文字外掛: <script src="path/to/sea.js"></script> <script src="path/t
借助new Function 實現前端模板引擎
ges ima spa 場景 分享 簡單 pan .com .cn 1.提取標識字段,替換值 通過正則 /<%([^%>]+)?%>取出age和name通過while替換成傳進來的值,生成this is 23,this is 123, 但是這種簡單的場景
JS前端模板引擎實現
簡單前端模板引擎實現 AbsurdJS本身主要是以NodeJS的模組的形式釋出的,不過它也會發布客戶端版本。考慮到這些,我就不能直接使用現有的引擎了,因為它們大部分都是在NodeJS上執行的,而不能跑在瀏覽器上。我需要的是一個小巧的,純粹以Javascri
《開源框架那點事兒25》:對框架模板引擎實現方式的改造實錄
port 內嵌 代碼調試 iter put 文件路徑 children nts fault 點滴悟透設計思想,Tiny模板引擎優化實錄! 增加框架設計興趣小組:http://bbs.tinygroup.org/group-113-1.html Tiny模板引擎的實
Java之利用Freemarker模板引擎實現程式碼生成器,提高效率
https://blog.csdn.net/huangwenyi1010/article/details/71249258 java模板引擎freemarker程式碼生成器 更多 個人分類: 一步一
JavaScript模板引擎實現原理和封裝
這裡以art-template為例 先看例子 <!-- 引入模板引擎js檔案--> <script type="text/javascript" src="arttemplate.js"></script> <div id="content"&g
Springboot中使用thymeleaf模板引擎實現頁面跳轉
1、建立一個Springboot專案2、在pom.xml中加入thymeleaf模板引擎的依賴 <!-- springboot web開發thymeleaf模板 --> <depend
SpringBoot靜態資源訪問+攔截器+Thymeleaf模板引擎實現簡單登陸
開始 -s 17. 登陸 maven安裝 有一點 1.8 static source 在此記錄一下這十幾天的學習情況,卡在模板引擎這裏已經是四天了。 對Springboot的配置有一個比較深刻的認識,在此和大家分享一下初學者入門Spring Boot的註意事項,如果是初學S
JavaScript 模板引擎實現原理解析
轉自這裡:http://www.cnblogs.com/huansky/p/6073104.html 感覺講的很好,可惜看的不是很懂…… 1、入門例項 首先我們來看一個簡單模板: <script type="template" id="template">
jdbcTemplate 和 Thymeleaf模板引擎 查詢 到模板賦值例子
blog urn pre 模板引擎 tex ras body del xmlns 二、 jdbcTemplate 和 Thymeleaf模板引擎 最簡單輸出例子 控制器代碼 @GetMapping(value = "/test2") public String
c++中模板的實現(模板類和模板函數)
c++ 模板實例化 泛型編程 [TOC] 模板 當我們實現一個交換函數時,我們可以寫成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; } 這裏只能交換兩個整
Groovy模板引擎上(基礎模板介紹)
原文連結 作者:groovy團隊 譯者:樹下偷懶的蟻 1.簡介 Groovy支援多種方式動態的生成文字譬如:GStrings, printf(基於Java5),MarkupBuilder 。除此之外,模板框架則是非常適用基於靜態模板生成文字的應用程式。 2.模板框架 在Groovy中,模板框
C++模板的實現(模板函式和模板類,附帶模板實現順序表和連結串列程式碼)
模板 當我們實現一個交換函式時,我們可以寫成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; } 這裡只能交換兩個整數,當我們
使用boost::enable_if與boost::type_traits在模板中實現對模板型別的介面的限制
直上原始碼: #include <cstdio> #include <iostream> #include <boost/utility.hpp> #include <boost/type_traits.hpp> struc
由淺入深:自己動手開發模板引擎——置換型模板引擎(四)
受到群裡兄弟們的竭力邀請,老陳終於決定來分享一下.NET下的模板引擎開發技術。本系列文章將會帶您由淺入深的全面認識模板引擎的概念、設計、分析和實戰應用,一步一步的帶您開發出完全屬於自己的模板引擎。關於模板引擎的概念,我去年在百度百科上錄入了自己的解釋(請參考:模板引擎)。老陳曾經自己開發了一套網鳥Asp.N
【設計模式】模板模式實現報表模板
需求:報表生產都大同小異,流程一樣,但是具體的實現不同(如資料不同,報表名不同,報表列不同)。如果每一次報表都複製貼上就太碼農。所以很自然的想到了模板模式。設計: 1.抽象類包含方法createReport(流程方法,既建立報表,生產表頭,將資料放入報表中,生產
由淺入深:自己動手開發模板引擎——解釋型模板引擎
受到群裡兄弟們的竭力邀請,老陳終於決定來分享一下.NET下的模板引擎開發技術。本系列文章將會帶您由淺入深的全面認識模板引擎的概念、設計、分析和實戰應用,一步一步的帶您開發出完全屬於自己的模板引擎。關於模板引擎的概念,我去年在百度百科上錄入了自己的解釋(請參考:模板引擎)。老陳曾經自己開發了一套網鳥Asp.N
【如何實現backbone元件化開發】 第二篇:優化方案的實現
系列文章 【如何實現backbone元件化開發】 第一篇:無元件所帶來的問題 在上一篇文章中,我們已經分析了Backbone在元件化開發上的不足,以及如何使用打包手段彌補這些不錯。接下來我們來逐步通過一個例子來講解優化的過程 1. 場景假設 假設我們需要使用B
【如何實現backbone元件化開發】 第一篇:無元件所帶來的問題
元件化開發優勢 從2015以來前後端分離的模式被越來越多的公司所使用,隨著業務程式碼複雜度的上升,程式碼也維護成本也隨之上升。對於一個複雜的web應用,我們可以使用分而治之的方式來降低系統的複雜度,也就是標題中所說的元件化開發。元件化開發可以把系統分割多個子模組,每個模組完成單一的功
前端模組化開發規範之AMD(可不是處理器哦!)
首先強調下,我們這裡提到的AMD可不是計算機的處理器哦! 繼CommonJS之後,雙出現了一種非同步載入模組的方法。就是AMD,全稱為:Asynchronous module definition。 它的使用方法依然很簡單。 定義一個模組: define('user', ['