Comments (9)
汗,1.4 都用了好久了,还真没注意到有这个更新,这么个设置还是挺有用的
主要是项目里全换成 handlebars 了,underscore 的模板还是有点弱啊
from blog.
@edokeh
我的都是小项目,本来就依赖 Underscore,模板引擎也直接用它的了。简单够用,更复杂的估计我也不会用,呵呵。
不过等等,Underscore 的模板支持完整的 JS 逻辑,开放、灵活,可以说它简单,但并不“弱”吧?
from blog.
嘿嘿,我们也是小项目啊,只是碰到些奇怪的需求嘛
主要遇到的问题是,underscore 缺少一个 helper 层,导致某些功能实现起来很别扭
我们的前端模板里面某些文字要做 i18n ,用 underscore 的话就只能污染数据对象来实现了
比如模板是这样
<div>
<h1><%= i18n('title') %>:<%= name %></h1>
</div>
那么就得这么弄
var data = {name:'edokeh'};
_.extend(data, {
i18n: function(key) {
return I18N_DATA[key]
}
})
_.template('...', data);
这时候 data 对象就被污染了,可能会有些潜在问题,而且从逻辑上来说也很不好啊
from blog.
@edokeh
Helper 层完全可以自己写,我感觉反而更灵活(借口,实际上模板规则太多了我记不住啊,哈哈)。Underscore 模板内部可以调用任何全局作用域可以调用的函数和变量,因为模板内的所有逻辑代码就是原生的 JavaScript 代码。
比如你的例子,其实不需要扩展数据源,直接这样写模板就可以:
<div>
<h1><%= I18N_DATA['title'] %>:<%= name %></h1>
</div>
如果一定解除模板对全局变量的依赖,并且不想改写数据源,也可以为模板单独准备数据:
var data = {name: 'edokeh'};
var dataToRender = _.extend({}, data, {
title: I18N_DATA['title']
});
然后使用这个模板:
<div>
<h1><%= title %>:<%= name %></h1>
</div>
当然这样稍显琐碎,还是前一种方法更直观。我感觉模板里存在适度逻辑(或对全局变量的适度调用)还是 OK 的。
from blog.
我们用 SeaJS 封装的模块,没有全局变量。。。
那个扩展的方式其实我们之前采用过的,可是写起来真的好麻烦。。。索性整体换个模板系统好了
其实 handlebars 用起来也不是很爽,里面完全不能放逻辑,不过幸好我们的系统没那么复杂,基本都能应对
赞同你说的适度逻辑的观点,handlebars 的世界观有些过于激进了
from blog.
@edokeh 是这样啊,明白了。
p.s. 不过 Sea.js 模块应该也可以手工暴露全局变量的,嘿嘿。
from blog.
是否有哪个线上应用用到了这个!
from blog.
@godpeacy 不好意思现在才看到你的留言。
我自己的经验是这样的:
更新:
- 百姓网 - 手机版 用它来作为轻量的前端模板解决方案。
from blog.
underscore is a greate template engine for html render.
from blog.
Related Issues (20)
- QCon 演讲:为什么前端工程师更应该掌握区块链 DApp 开发(下) HOT 6
- [邀请] 魔法哥今日作客掘金 AMA 活动,等待你来提问哦! HOT 1
- 魔法哥快问快答(第二季 ‧ 第一期)
- 想换工作的小伙伴看过来(番外篇):重构自己的前端知识体系
- 魔法哥快问快答(第二季 ‧ 第二期)
- 感谢
- 这几天刷屏的谷歌 Gemini 大模型又放出免费 API,压力给到奥特曼 HOT 3
- 【建议收藏】四款免费的 AI 抠图工具,最后一个不敢相信!
- 【重要提醒】GPTs 商店即将开张,坐等赚钱之际,别忘了做好防盗工作 HOT 1
- 慢着,你用 AI 生成的作品,版权归你吗?
- 我悄悄建了一个 AI 网址导航,相信对你也有用
- ChatGPT 定制化进阶:四步成为 AI 对话高手
- 请收下这份 GPTs 完全指南 (一):入门篇
- 请收下这份 GPTs 完全指南 (二):如何开发
- 请收下这份 GPTs 完全指南 (三):如何上架
- 请收下这份 GPTs 完全指南 (四):如何赚钱
- OpenAI 的视频生成模型 Sora 被捧上天,但他们自己说还有这几个缺陷
- 新书《AI 辅助编程》在翻译了,不容错过!
- 性能超出预期!神秘的国产大模型 Kimi 开放 API HOT 2
- 魔法哥解答 Kimi API 常见问题,顺便探讨 AI 应用开发的那些事儿
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blog.