JavaScript 模板引擎 Velocity.js

2020-12-17 CSDN技術社區

Velocity.js是Velocity模板語法的Javascript實現。Velocity模板適用於大量模板使用的場景,支持複雜的邏輯運算,包含基本數據類型、變量賦值和函數等功能。Velocity語法具有很高的容錯能力,類似於html結構的解析,同時語法規則複雜。velocity.js兼容ie6+,chrome等其他瀏覽器。

開源協議:The MIT License

代碼託管地址:https://github.com/shepherdwind/velocity.js

功能特性

  • 支持客戶端和伺服器端使用
  • 語法是富邏輯的,構成門微型的語言
  • 語法分析和模板渲染分離
  • 基本完全支持velocity語法
  • 瀏覽器使用支持模板之間相互引用,依據js模塊加載機制,比如kissy
  • 三個Helper,友好的數據模擬解決方案
  • Vim Syntax 

Velocity.js使用介紹

安裝

via npm:

$ npm install velocity.js

查看最新版本

$ npm info velocityjs version

瀏覽器支持

兼容ie6+,chrome等其他瀏覽器

執行cake命令進行打包velocity.js瀏覽器端腳本:

$ make parse

需要cli下安裝coffeejs,暫時打包是為kissy所使用的,velocity.js需要的一些常用的 ecma5功能,比如foreach, some, isArray等,在node環境下是自帶的功能,而web端的兼 容是交給已有的類庫解決。需要自行提供一組跨瀏覽器的api,比如kissy打包:

//api map var utils = { forEach : S.each, some : S.some, mixin : S.mix,    guid : S.guid, isArray : S.isArray, indexOf : S.indexOf, keys : S.keys,    now : S.now };

Velocity語法具有很高的容錯能力,類似於html結構的解析,同時語法規則複雜,所以語法 解釋器執行性能可能比較慢,Velocity.js把語法結構分析運算和語法執行兩個過程獨立出來, 第一步,語法結構分析返回一個數組(語法樹),描述velocity語法,語法執行使用數據和語 法樹,計算模板最終結果。

執行build後,得到兩個文件,分別是build/velocity/下的index.js和parse.js,兩者 相互獨立,parse.js語法分析過程可以放在本地完成,執行命令:

把語法分析和模板拼接分開,為了方便在本地編譯語法樹,減少在web端js運算。本地編譯 模板的思路,源自KISSY的 xtemplate。

雖然語法解釋器可以在瀏覽器端執行,但是,不推薦那麼使用。

#使用velocity命令行工具打包veloctiy --build *.vmveloctiy -b *.vm

源碼test/web/中目錄的js,一部分就是線下編譯後的得到的,此處可

直接訪問

公共API:

node_module

var Velocity = require('../src/velocity');//1. 直接解析Velocity.render('string of velocity', context);//2. 使用Parser和Compilevar Parser = Velocity.Parser;var Compile = Velocity.Compile;var asts = Parser.parse('string of velocity');(new Compile(asts)).render(context);

context 

context是一個對象,可以為空,執行中$foo.bar,訪問路徑是context.foo.bar, context的屬性可以是函數,和vm中定義保持一致。

On Broswer

1 . 使用線下打包方案:

KISSY.use('velocity/index, web/directives', function(S, Velocity, asts){  var compile = new Velocity(asts);  S.all('body').html(compile.render());});

2 . 使用線上編譯:

KISSY.use('velocity/index, velocity/parse', function(S, Velocity, Parser){  var html = (S.all('#tpl').html());  var asts = Parser.parse(html);  var compile = new Velocity(asts);  console.log(compile.render());});

兩者的區別在於asts的獲取,第一種方式,直接取asts,第二種,需要首先執行語法分析過程。

更多velocity.js介紹請 參看這裡。

本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • 一個高性能js動畫庫velocity.js簡介
    一、為什麼是velocity不是jquery時下,如何快速製作js動效,許多人可能會首先想到使用jquery。jquery的就是如此流行。因此要製作高性能js動畫,可能不得不放棄jquery,轉而使用原生js製作動畫。那有沒有一種js高性能動效庫,既像jquery一樣簡單易用,動畫又高性能?這就是velocity.js動畫庫了。
  • 如何創建以EJS為模板引擎的Node.js項目
    工具WebStormnpmNode.js技術expressejsJavaScript在創建Node.js項目時,可以使用不同的JavaScript模板引擎,如Pug、EJS等。那麼,如何在Node.js項目中使用EJS模板引擎呢?下面利用實例說明:操作步驟:1、打開WebStorm工具,點擊File--->New--->Project,輸入項目名稱,然後選擇EJS模板引擎
  • 如何利用MyEclipse開發工具開發基於Velocity模板的Web應用
    Velocity模板所需要JAR包文件velocity-1.6.1-dep.jar,請見下圖所示的最終操作的結果截圖。設置該文件中的內容,請見如下代碼中的示例——Velocity模板引擎(Template Engine)的velocity.properties屬性配置文件的示例file.resource.loader.path = /runtime.log = /velocity.log該文件為Velocity
  • 前端js模板引擎,快速地動態拼接html代碼
    要是像php模板引擎一樣,直接把變量塞進html代碼裡面,不但不用糾結引號是否匹配、成對標籤是否缺失閉標籤,而且格式化,那多好嗯,這個可以有。php有模板引擎,咱js也有,不但有,還百家爭鳴。本猿機緣巧合之下,遇見了art-template.js。先看一眼官方文檔。
  • Juicer 0.4.0-dev 發布,JS模板引擎
    Juicer 是一個高效、輕量的前端 (Javascript) 模板引擎,效率和易用是它追求的目標。 除此之外,它還可以運行在 Node.js 環境中。示例模板:{@each list as item,index} {@if index===3} the index is 3, the value is ${item.prop} {@else if index === 4} the index is 4, the value is ${item.prop} {
  • Vuejs基礎之:實例、模板、計算、class與Style綁定
    2.1   插值插值的簡單理解,即Vue.js通過模板的方式來編寫HTML,而模板中被Vue.js替換的部分,即是插值。•  文本•純HTML•屬性•使用javascript表達式•過濾器2.1.1   文本html中需要動態顯示的文本內容,可以通過{{ }}來讓Vue.js解析並插入•數據綁定最常見的形式就是使用 「Mustache」 語法(雙大括號)的文本插值,代碼如圖:
  • 如何在Web應用系統表示層開發實現中應用Velocity模板技術
    Velocity是一種基於Java系統平臺的模板引擎,它允許軟體應用系統的開發人員使用簡單而強大的模板語言來引用哪些定義在Java程序代碼中的對象。而且Velocity應用具有簡潔的語法和採用類似腳本語言的方式引用目標數據對象。
  • 如何在Web應用中實現Velocity 與Struts2框架相互集成的應用實例
    模板引擎的支持,而且也提供對 另一個廣泛應用的FreeMarker 模板引擎的支持。在Struts 2應用框架中集成Velocity模板引擎的實現過程比在Struts應用框架中集成Velocity模板引擎要簡單的多,因為Struts 2應用框架系統內帶有對Velocity模板引擎的技術支持。
  • 如何在Web應用中實現Velocity 與Struts 框架相互集成的應用實例
    ,實現將 Velocity模板引擎與J2EE Web開發環境集成的工具包。VelocityStruts 提供了一組專用的 Velocity 模板引擎工具,用於訪問 Struts應用框架中專有的資源和 Velocity 模板文件中的信息。其主要的目的就是結合Velocity模板引擎在MVC體系架構的應用系統中的視圖層上的優勢跟Struts應用框架在MVC體系架構的應用系統中的控制層上的優勢。
  • 初識javascript,JS的歷史_騰訊新聞
    javascript和H5的關關係 什麼是HTML5? javascript的應用範圍 1.PC端web開發(網站) 2.移動端開發(webApp、混合App)服務端開發(NodeJs) 3.遊戲開發(unity3D-TypeScript,網頁遊戲)在線演示:忍者水果
  • JavaScript MVC 框架,Mithril.js 0.2.0 發布
    JavaScript MVC 框架,Mithril.js 0.2.0 發布 Mithril.js 是一個客戶端的 JavaScript MVC 框架。可將應用分成數據層、UI層和控制層。Mithril 壓縮後只有 3kb 左右。
  • 與moment.js整合使用的javascript日期選擇期 - Pikaday
    與moment.js整合使用的javascript日期選擇期 - Pikaday 在線演示Pikaday是一款超輕量級的javascript日期選擇器
  • 秒懂laravel框架blade模板引擎基礎if_foreach用法及原理
    laravel框架blade模板引擎基礎用法,針對if、while、foreach等相關的php代碼在blade模板中使用方法及邏輯判斷用法。Blade是Laravel提供的一個既簡單又強大的模板引擎,和其他流行的PHP模板引擎不一樣,Blade並不限制你在視圖view中使用原生的PHP代碼,所有的Blade視圖頁面都將被編譯成原生的PHP代碼並緩存起來,除非你的的模板文件修改,否則不會重新編譯.
  • 不容忽視:MongoDB的JavaScript性能
    【IT168 技術】mongodb使用javascript做shell, mongodb的db.eval可以提供給數據驅動與這種javascript shell類似的js接口。
  • javascript基礎教程 js引入方式
    js引入方式行內式:通過向 html 元素行內添加一些 js 代碼,如給 div 綁定點擊事件<divonclick="alert('這是js代碼')">這是一個div</div>
  • centos7編程實踐:安裝nodejs
    Node.js是一個javascript運行環境。它讓javascript可以開發後端程序,實現幾乎其他後端語言實現的所有功能,可以與PHP、Java、Python、.NET、Ruby等後端語言平起平坐。
  • java開發工程師 javascript面向對象的初識
    但是我建議大家還是要把他寫上: 在js中,函數、方法的定義是function ,比如我們下面定義個函數: 當我們定義function people(){}的時候,就相當於在js的window對象中開闢了一塊空間,相當於一個模板,名稱叫做people被靜靜的放置在那兒,等待程式設計師去創建他的實例。那麼突然之間,你new 了這個people一下,那麼它就會為你這個new的東西產生一塊和people模板一模一樣的內存空間。
  • JavaScript 執行機制
    因為javascript是一門單線程語言,所以我們可以得出結論:看到這裡讀者要打人了:我難道不知道js是一行一行執行的?還用你說?1.關於javascriptjavascript是一門單線程語言,在最新的HTML5中提出了Web-Worker,但javascript是單線程這一核心仍未改變。所以一切javascript版的"多線程"都是用單線程模擬出來的,一切javascript多線程都是紙老虎!
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascript前些年流行的flash已經慢慢的被淘汰,js盛行起來。javascript :客戶端編程。javascript是由客戶端去解釋運行的。怎麼引入javascript 呢?
  • 15 個提高編程技巧的 JavaScript 工具
    官方網站:http://graspjs.com/5. Gulp.jsGulp.js是一個流構建系統。官方網站:http://gulpjs.com/6.Orcrad.jsOcrad.js是一個簡單的OCR程序,可以將圖像轉化成文字