精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Velocity.js —— 來自淘寶的 JS 模板引擎

開發 前端
Velocity.js 是velocity模板語法的javascript實現。Velocity 是基于Java的模板引擎,廣泛應用在阿里集 體各個子公司。Velocity模板適用于大量模板使用的場景,支持復雜的邏輯運算,包含 基本數據類型、變量賦值和函數等功能。Velocity.js 支持 Node.js 和瀏覽器環境。

注意

velocityjs在npm中包名從原來的velocity.js改為velocityjs,感覺require("velocity.js") 比較不好看,所以改名,從0.3.0之后的版本都在velocityjs下更新。

查看最新版本

  1. $ npm info velocityjs version 

Velocity.js 是velocity模板語法的javascript實現。Velocity 是基于Java的模板引擎,廣泛應用在阿里集 體各個子公司。Velocity模板適用于大量模板使用的場景,支持復雜的邏輯運算,包含 基本數據類型、變量賦值和函數等功能。Velocity.js 支持 Node.js 和瀏覽器環境。

最新版下載地址:https://github.com/shepherdwind/velocity.js/zipball/master

Features

  • 支持客戶端和服務器端使用

  • 語法是富邏輯的,構成門微型的語言

  • 語法分析和模板渲染分離

  • 基本完全支持velocity語法

  • 瀏覽器使用支持模板之間相互引用,依據kissy模塊加載機制

  • 三個Helper,友好的數據模擬解決方案

  • Vim Syntax

Install

via npm:

 
  1. $ npm install velocityjs 

Broswer Support

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

點擊此處可以體驗web 端velocity語法解析過程,注:使用ACE作為代碼編輯器,僅支持高級瀏覽器訪問。

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

 
  1. $ make parse  

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

 
  1. //api map  
  2. var utils = {  
  3.   forEach : S.each,  
  4.   some    : S.some,  
  5.   mixin   : S.mix,  
  6.   guid    : S.guid,  
  7.   isArray : S.isArray,  
  8.   indexOf : S.indexOf,  
  9.   keys    : S.keys,  
  10.   now     : S.now  
  11. };  

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

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

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

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

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

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

Public API

node_module

 
  1. var Velocity = require('../src/velocity');  
  2.  
  3. //1. 直接解析  
  4. Velocity.render('string of velocity', context);  
  5.  
  6. //2. 使用Parser和Compile  
  7. var Parser = Velocity.Parser;  
  8. var Compile = Velocity.Compile;  
  9.  
  10. var asts = Parser.parse('string of velocity');  
  11. (new Compile(asts)).render(context);  

context

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

On Broswer

1 . 使用線下打包方案:

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

2 . 使用線上編譯:

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

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

Syntax

具體語法請訪問官網文檔:velocity user guide

Directives

Directives支持set, foreach, if|else|elseif, macro, parse, break。不 支持有,stop, evaluate, define,感覺這些語法比較偏,用處不大,暫時沒有實現。 其中parse,在web端,使用kissy的模塊加載器加載,需要首先線下編譯打包,例子

macro

宏分為系統的宏,比如parse, include,和用戶自定義宏,通過#macro在vm中定義,此 外可以使用自定義的js函數替代在vm中定義。對于系統宏和自定義宏,不做區分,對于 #parse#include的調用,可以使用自定義函數來執行。具體見issue #3

foreach

foreach在velocity中對對象的遍歷,和js有區別,java中對象是一個map,需要通過方法 keyset來獲取map中的key,foreach循環寫法等同于js的for in循環,感覺有點怪異。在 一個foreach,有一個$foreach的對象可以使用,此變量作用域為當前循環范圍。

  1. #foreach($num in [1..5])  
  2.   index => $foreach.index   
  3.   count => $foreach.count  
  4.   #if (!$foreach.hasNext) end #end  
  5. #end  
  6. 結果:  
  7. index => 0  
  8. count => 1  
  9.  
  10. index => 1  
  11. count => 2  
  12. ...  
  13. index => 4  
  14. count => 5  
  15. end  

string

velocity中字符串求值和php類似,雙引號字符串里面的變量會被替換變量對應的值,單引 號原樣返回,推薦盡量使用單引號,那樣性能好一些。此外,雙引號中變量替換,沒有再次 調用語法分析器,而是使用正則,只支持簡單的引用替換,比如"$varname1 $foo.bar""$foo.bar[1] $foo.bar()"都不支持。如果需要完整支持字符串雙引號,需要反復調用語 法分析器,考慮到性能,基本引用基本夠用了,vm本身支持強大的變量賦值,可以先賦值, 在放入字符串,或者使用加法進行字符串拼接。

在java中可能大量使用雙引號方式,因為java對象無法自動轉換類型,雙引號做類型轉換用, 而在web端,js無此需要。

velocity

  1. Usage: velocity [options] [file ...]  
  2.  
  3. Options:  
  4.  
  5.   -h, --help         output usage information  
  6.   -V, --version      output the version number  
  7.   -b, --build        build .vm file to js ast module of kissy  
  8.  
  9. Example:  
  10.  
  11.   # parse vm file  
  12.   $ velocity a.vm   
  13.  
  14.   # parse vm file with json data  
  15.   $ velocity a.vm  a.json  
  16.  
  17.   # build asts module of kissy  
  18.   $ velocity *.vm  

Helper

Helper提供一些額外的功能,主要用于解決vm數據模擬問題。

  • structure 獲取vm中所有變量的結構: $foo.bar => foo: {bar: 'string'}
  • backstep vm逆推,根據velocity文件和解析后的結果,計算數據結構和內容
  • jsonify 把vm轉換為json結構,去除其中的html標簽,比如:

jsonify文檔issue #11

  1. hello world $foo.name.  
  2. =>  
  3. {foo: { name: $foo.name }}  

License

(The MIT License)

Copyright (c) 2012-2013 Eward Songeward.song@gmail.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

來自:https://github.com/shepherdwind/velocity.js

 

責任編輯:林師授 來源: 51cto
相關推薦

2013-08-20 18:50:46

JS模板引擎模塊化Web App

2021-02-01 08:36:19

JS引擎V8

2021-04-21 12:04:47

JS引擎流程

2021-02-27 10:52:08

JS移動端Hermes

2016-08-02 10:22:10

JS微軟Node

2021-09-07 15:25:51

鴻蒙HarmonyOS應用

2021-01-11 13:46:26

Spring BootThymeleafJava

2016-11-14 15:51:42

JavaScriptAngular.jsReact.js

2011-07-15 14:01:50

PHP模板引擎

2015-08-04 10:25:12

velocity

2012-06-07 16:16:43

JavaScript

2017-03-10 18:29:17

Androidfreemarker應用

2020-06-02 14:00:53

Vue.js組件Web開發

2011-10-22 11:32:42

Node.js

2024-04-12 08:32:03

JSAI機器學習

2020-10-19 11:49:32

NodeJavaScript

2025-01-17 09:29:42

2012-11-08 10:21:41

JSrequireJavaScript

2022-02-08 18:09:20

JS引擎解析器

2011-07-07 16:15:20

Smarty
點贊
收藏

51CTO技術棧公眾號

美国一级片在线免费观看视频 | 亚洲国产99精品国自产| 国产高清不卡无码视频| 丁香花免费高清完整在线播放| 在线日韩视频| 亚洲香蕉av在线一区二区三区| 中文字幕 日韩 欧美| h片精品在线观看| 国产视频亚洲色图| 亚洲自拍高清视频网站| 国产午夜免费福利| 99tv成人| 国产视频精品自拍| 毛毛毛毛毛毛毛片123| 在线手机中文字幕| 亚洲日本在线视频观看| 久久久久久久久一区| 91午夜交换视频| 国产欧美一区二区色老头| 久久精品国产欧美激情| 亚洲精品视频大全| 日本亚洲视频| 欧美视频一区在线| 国产精品50p| av在线免费观看网址| 久久久午夜电影| 国产女人水真多18毛片18精品| 中文字幕免费观看视频| 在线黄色av网站| 国产原创在线观看| 国产亚洲成aⅴ人片在线观看| 91在线免费网站| 久久久久久亚洲av无码专区| 在线成人h网| 久久精品国产亚洲精品2020| 在线免费播放av| 中文无码日韩欧| 欧美日本一道本| 999香蕉视频| 中文字幕高清在线播放| 亚洲狠狠爱一区二区三区| 一本久道久久综合| 黄色在线网站| 91亚洲国产成人精品一区二三| 51蜜桃传媒精品一区二区| 五月婷婷丁香在线| 亚洲欧美日本视频在线观看| 国a精品视频大全| 欧美日韩人妻精品一区二区三区| 久久精品欧美一区| 最好看的2019年中文视频| 色欲AV无码精品一区二区久久| 欧美人体视频| 亚洲激情第一页| 秘密基地免费观看完整版中文 | 欧美在线免费观看视频| 日本福利视频一区| 不卡一本毛片| 午夜天堂影视香蕉久久| 国产在线播放观看| 欧美日韩国产观看视频| 精品久久中文字幕久久av| 久久综合久久网| av在线小说| 黄色精品一区二区| 日本毛片在线免费观看| 亚洲女同av| 在线观看免费亚洲| 手机在线成人免费视频| 四虎国产精品免费久久| 91精品国产入口在线| 欧美污在线观看| 91国内精品| 日韩精品中文在线观看| 国产美女免费网站| 久久中文字幕av| 欧美成人在线免费| 亚洲国产综合久久| 性久久久久久| 国产日本欧美在线观看| 国产色视频在线| www.色综合.com| 欧美日韩三区四区| 午夜在线小视频| 一区二区三区国产精品| 日本成年人网址| 成人精品动漫| 日韩欧美激情一区| 亚洲一区二区观看| www亚洲国产| 国产福利拍拍拍| 性感少妇一区| 国产日韩视频在线观看| 精品国产亚洲av麻豆| 99精品久久只有精品| 手机在线观看国产精品| av在线免费网站| 欧美日韩国产一中文字不卡| mm131国产精品| 成人在线超碰| 性色av一区二区怡红| 日韩av网站导航| 久久久精品成人| 精品电影一区| 国产精品一区=区| 欧美 日韩 中文字幕| 国产欧美日韩在线观看| 日韩免费在线观看av| 另类激情视频| 日韩女优av电影| 黄色片网站免费| 一本色道88久久加勒比精品| 91精品久久久久久综合乱菊| 天天干天天爽天天操| 国产精品国产三级国产aⅴ入口 | 国产精品99免费看| 国产精品高精视频免费| 免费观看成年人视频| 国产精品久久久久久久久果冻传媒| 丝袜人妻一区二区三区| 日韩黄色三级| 亚洲午夜av电影| 日本少妇久久久| 国产麻豆视频一区| 亚洲7777| 欧美aaa视频| 精品视频在线播放色网色视频| 青青草原国产视频| 青青青爽久久午夜综合久久午夜| 精品免费一区二区三区蜜桃| 日本三级韩国三级欧美三级| 欧美日韩一级二级三级| 中文字幕一区二区久久人妻网站| 欧美激情1区2区3区| 国产精品久久久一区| 色视频在线观看| 亚洲一区二区三区中文字幕| www.成年人| 日韩夫妻性生活xx| 国产成人综合久久| 神马久久精品| 五月综合激情网| www.17c.com喷水少妇| 欧美区一区二| www 成人av com| 性欧美1819sex性高清大胸| 欧美人狂配大交3d怪物一区| 四虎成人免费影院| 日本系列欧美系列| 亚洲欧洲日本国产| 嫩草伊人久久精品少妇av杨幂| 亚洲欧美国产精品久久久久久久| 天堂网一区二区三区| aaa亚洲精品一二三区| 精品国产av无码一区二区三区| jazzjazz国产精品麻豆| 久久久欧美一区二区| 人妻精品一区一区三区蜜桃91| 亚洲在线中文字幕| 蜜臀视频在线观看| 日韩亚洲在线| 麻豆久久久av免费| 日本一区免费网站| 在线观看日韩www视频免费| 在线观看国产黄| 亚洲欧美日韩国产另类专区| 特种兵之深入敌后| 欧美午夜免费影院| 久久精品国产精品国产精品污 | 久久久国产精品一区二区三区| 黄色18在线观看| 亚洲欧洲美洲在线综合| 成人免费一区二区三区| 国产精品成人免费在线| 99精品视频国产| 国产一区二区中文| 久久综合福利| 国外成人福利视频| 欧美极品美女电影一区| 你懂的在线视频| 欧美人与禽zozo性伦| 国产一级黄色av| 久久综合中文字幕| 九九热精品在线播放| 欧美freesex交免费视频| 国产日韩在线一区二区三区| 欧美羞羞视频| 久久精品久久久久久国产 免费| www.国产免费| 色综合久久久久综合| 激情无码人妻又粗又大| 成人午夜av影视| 手机视频在线观看| 亚洲午夜av| 四虎永久国产精品| 亚洲综合影院| 国产精品久久精品| xxxx另类黑人| 最新69国产成人精品视频免费| 成人乱码一区二区三区 | 国产精品伦理一区| 激情懂色av一区av二区av| 国产又粗又猛又爽又黄的视频四季| 国产成人综合在线| 日本成人中文字幕在线| 欧美黄色精品| 伊人色综合影院| 中文成人无字幕乱码精品区| 日韩欧美在线精品| 91老司机在线| 欧美日韩123区| 欧美激情一区二区久久久| av免费在线一区二区三区| 亚洲国产高清福利视频| 国产又大又黄的视频| 色综合久久久久| 国产精品111| 亚洲天堂av一区| 少妇人妻好深好紧精品无码| 9i在线看片成人免费| 日韩av福利在线观看| 日本免费在线视频不卡一不卡二| 欧美久久久久久久久久久久久 | 久久尤物电影视频在线观看| 久久久久99人妻一区二区三区| 蜜桃精品视频在线观看| 久久美女福利视频| 亚洲欧洲另类| 中文精品无码中文字幕无码专区| 99国产精品一区二区| 日韩欧美亚洲区| 国产九一精品| 久久久久无码国产精品一区| 超碰地址久久| 99在线首页视频| 精品久久国产一区| 91免费欧美精品| 欧美电影在线观看网站| 国产精品久久999| 视频精品导航| 国产欧美精品日韩| 国产日本久久| 91精品久久久久久久久久另类| 成人国产在线| 国产精品视频一区国模私拍| 福利视频亚洲| 国产伦精品免费视频| jizzyou欧美16| 国产精品免费小视频| 日韩一级二级| 国产精品日韩一区| 狠狠久久伊人中文字幕| 国产精品一区二区久久国产| 成人黄色免费网站| 91精品国产自产在线老师啪| 中文字幕成人| 91精品黄色| 精品嫩草影院| 乱一区二区三区在线播放| 亚洲三级网址| 日韩电影大全在线观看| 99久久激情| 天堂а√在线中文在线 | 国产极品美女高潮无套久久久| 久久激情视频| 高清一区在线观看| 国产在线播放一区三区四| 久久精品国产露脸对白| 国产福利一区在线观看| 99免费观看视频| 91麻豆精品视频| 欧美三级视频网站| 亚洲男人天堂一区| 97超碰人人干| 欧美在线三级电影| 精品国产区一区二| 日韩精品免费综合视频在线播放 | 国模无码视频一区二区三区| 久久不射中文字幕| 第一区免费在线观看| 成人动漫av在线| 国产123在线| 亚洲一区二区三区四区五区黄| 久久精品视频1| 欧美日产国产精品| 人人妻人人澡人人爽精品日本| 亚洲精品小视频| 黄色精品免费看| 国产91|九色| 国产日韩欧美中文在线| 鲁片一区二区三区| 自拍偷拍欧美| 国产福利视频在线播放| 韩国女主播成人在线观看| chinese麻豆新拍video| 国产精品免费丝袜| 日本少妇在线观看| 欧美日韩中文一区| 天堂在线中文网| 综合136福利视频在线| 国产啊啊啊视频在线观看| 国产精品第10页| 激情小说亚洲图片| 在线观看日韩羞羞视频| 亚洲视频1区| 中文字幕在线观看视频www| 久久老女人爱爱| 久久精品无码人妻| 欧美另类高清zo欧美| 欧美女优在线观看| 欧美福利视频在线观看| 欧美日韩破处视频| 欧美xxxx黑人又粗又长密月 | 欧美精品福利视频| 亚洲精品555| 欧美lavv| 在线亚洲免费| 国产精九九网站漫画| 中文字幕一区在线观看视频| 狠狠人妻久久久久久综合| 日韩精品一区国产麻豆| 欧美性天天影视| 国产精品露脸av在线| 亚洲动漫在线观看| av网站手机在线观看| 国产一区二区影院| 欧美xxxx精品| 日韩欧美国产成人| 天天干视频在线观看| 久久久久久国产精品三级玉女聊斋| 亚洲一区二区av| 亚洲一区二区三区加勒比| 久久久久久久欧美精品| 三级男人添奶爽爽爽视频| 亚洲一区二区三区不卡国产欧美| 国产99999| 九九热这里只有在线精品视| 亚洲男女网站| 中文字幕日韩一区二区三区不卡 | 亚洲熟妇一区二区| 亚洲色图视频网站| 888奇米影视| 精品国产欧美一区二区三区成人| 欧美成人app| 亚洲欧美日韩国产yyy| 青青草97国产精品免费观看 | 亚洲国产精品91| 国产欧美精品一二三| 日韩美女久久久| 国产日韩欧美视频在线观看| 久久成人亚洲精品| 精品久久久久久久久久岛国gif| 9l视频自拍9l视频自拍| 激情文学综合插| 极品颜值美女露脸啪啪| 日韩欧美在线网站| 暖暖在线中文免费日本| 国产伦精品一区二区三区视频黑人| 99国内精品| 国产小视频自拍| 欧美性猛交xxxxxx富婆| 日本视频在线| 91嫩草免费看| 一本色道久久精品| a级片在线观看| 欧美日韩大陆一区二区| 二区三区在线观看| 成人免费在线一区二区三区| 亚洲美洲欧洲综合国产一区| a级大片在线观看| 欧美日韩一区视频| 先锋影音在线资源站91| 国产精品二区在线观看| 免费欧美在线| 久久精品国产亚洲AV成人婷婷| 欧美另类久久久品| 97人人爽人人澡人人精品| 蜜桃av色综合| 久久99久久精品欧美| 久久av高潮av无码av喷吹| 亚洲精品理论电影| 欧美a视频在线| 日韩精品视频在线观看视频| 91老师片黄在线观看| 亚洲影院一区二区三区| 欧美大片免费看| 国产一区二区三区91| 亚洲欧美一区二区三区不卡| 欧美日韩美女在线观看| 婷婷在线视频| 精品国产乱码久久久久久郑州公司 | 色欲久久久天天天综合网| 国产精品电影观看| 欧美日韩精品免费观看视频完整| 好吊日免费视频| 91精品国产综合久久久久| 丝袜诱惑一区二区| 91视频成人免费| 国产午夜精品美女毛片视频| www.五月激情|