1. 程式人生 > >seajs載入模板引擎實現前端模板化開發

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!

 字首來指明 JSON 檔案。

注意事項

  1. Sea.js 通過 XHR 來載入文字檔案。受同源策略限制,在開發完成後,推薦通過構建工具將文字檔案轉換為 JS 程式碼。這樣,上線後就可以從任意域載入。

  2. 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', ['