### 我想放点html模板代码
很多时候我们需要放点模板代码在页面中,比如我们在使用` layer.js` 的时候需要使用`html`,但又不想创建一个影响页面的`div`,那么此时我们有很多解决方法, `layer.mobile.js`有个实例是这样做的:
```html
<textarea id="demo5a" style="display:none;">
// html
</textarea>
```
但是这样有一个问题,那就是如果我模板里面有`textarea`标签的话,那么就不能使用这种方式了。
`artTemplate.js`包装模板的方式是将模板包在script标签中:
```html
<script id="tpl-goods-container" type="text/html">
// html 模板
</script>
```
这样可以通过
```javascript
$('#ID').html();
```
拿到模板内容
而一般在模板里面没有`script`标签吧,所以还是用`script`标签来包裹模板比较合适。
### 扩展
页面中需要用到模板,这种需求其实很常见,最简单的一种方式就是自己拼接,但是这样实在是太累了,太繁琐,简单的结构还好,要是遇上复杂的结构使用拼接字符串的方式那简直是噩梦,并且这种方式不好维护,代码也不好看。
其实深入的看,拼接字符串生成的`html`,用这种的方式创建`DOM`在编程的思想中是叫做**声明式编程**,比如还有`react`的`JSX`也可以看做是声明式编程,与之对应的是**命令式编程**,命令式编程不利于我们书写大段的页面结构和样式等,其实`JSX`最终是会编译成命令式的。
这样来看的话,我们写的`.html`、`.css`文件其实就是一个声明式编程的文件了。
对于页面和样式的编写,显然声明式编程效率的更高(这是说我们写代码时的效率,不是代码最终执行的性能效率)。而模板引擎就是这个作用,让我们用声明式的方式写模板,因为拼接实在是太麻烦了(还嫌拼接麻烦那么命令式创建`DOM`那真是要人命)。
> 有人可能说写个模板根本算不上编程,还说是声明式编程,好吧,写html、css不叫编程,你说不叫就不叫,不过我想说的是,其实编程这东西本身就不存在,是人们创造出来的,C语言叫编程吗,也是人们创造出来的,编程的目的是为了解决问题的,所有的东西并不是凭空有的,php也是基于C的,html又是基于浏览器解析的,一些编程的概念也是人们设计总结出来的,所以当你说html不配叫编程时,那么你写php的立场又在哪里?
### 参考
- [淘宝详情页的 BigRender 优化与存放大块 HTML 内容的最佳方式](https://lifesinger.wordpress.com/2011/09/23/bigrender-for-taobao-item/)
- [layer](http://layer.layui.com/)
- [layer.mobile](http://layer.layui.com/mobile/)
- [artTemplate](http://aui.github.io/artTemplate/)
- [如何在 JS 中嵌入 HTML 代码?](https://www.zhihu.com/question/20240397)
- [函数式编程入门教程](http://www.ruanyifeng.com/blog/2017/02/fp-tutorial.html?hmsr=toutiao.io)
- [函数式编程和命令式编程](http://blog.csdn.net/bruno231/article/details/6425710)
- [声明式编程和命令式编程的比较](http://kb.cnblogs.com/page/181030/)
[React 是怎样炼成的](https://mp.weixin.qq.com/s/6i7x8ZgOBU5EijGweXfqdA)
[tmodjs/why-tmodjs.md at master · aui/tmodjs](https://github.com/aui/tmodjs/blob/master/doc/why-tmodjs.md)
> 它使用一个特殊的<script type="text/html"></script>标签来存放模板(由于浏览器不支持这种类型的声明,它存放的代码不会当作 js 运行,代码也不会被显示出来)。使用模板引擎渲染模板的示例:
* * * * *
update:2017-3-3 13:57:26
- 开始
- 微信小程序
- 获取用户信息
- 记录
- HTML
- HTML5
- 文档根节点
- 你真的了解script标签吗?
- 文档结构
- 已经落后的技术
- form表单
- html实体
- CSS
- css优先级 & 设计模式
- 如何编写高效的 CSS 选择符
- 笔记
- 小计
- flex布局
- 细节体验
- Flex
- Grid
- tailwindcss
- JavaScript
- javascript物语
- js函数定义
- js中的数组对象
- js的json解析
- js中数组的操作
- js事件冒泡
- js中的判断
- js语句声明会提前
- cookie操作
- 关于javascript你要知道的
- 关于innerHTML的试验
- js引擎与GUI引擎是互斥的
- 如何安全的修改对象
- 当渲染引擎遇上强迫症
- 不要使用连相等
- 修改数组-对象
- 算法-函数
- 事件探析
- 事件循环
- js事件循环中的上下文和作用域的经典问题
- Promise
- 最佳实践
- 页面遮罩加载效果
- 网站静态文件之思考
- 图片加载问题
- 路由及转场解决方案
- web app
- 写一个页面路由转场的管理工具
- 谈编程
- 技术/思想的斗争
- 前端技术选型分析
- 我想放点html模板代码
- 开发自适应网页
- 后台前端项目的开发
- 网站PC版和移动版的模板方案
- 前后端分离
- 淘宝前后端分离
- 前后端分离的思考与实践(一)
- 前后端分离的思考与实践(二)
- 前后端分离的思考与实践(三)
- 前后端分离的思考与实践(四)
- 前后端分离的思考与实践(五)
- 前后端分离的思考与实践(六)
- 动画
- 开发小技巧
- Axios
- 屏幕适配
- 理论基础
- 思考
- flexible.js原理
- 实验
- rem的坑,为什么要设置成百分比,为什么又是62.5%
- 为什么以一个标准适配的,其它宽度也能同等适配
- 自适应、响应式、弹性布局、屏幕适配
- 适配:都用百分比?
- 番外篇
- 给你看看0.5px长什么样?
- 用事实证明viewport scale缩放不会改变rem元素的大小
- 为什么PC端页面缩放不会影响rem元素
- 究竟以哪个为设备独立像素
- PC到移动端初试
- 深入理解px
- 响应式之栅格系统
- 深入理解px(二)
- 一篇搞定移动端适配
- flex版栅格布局
- 其他
- 浏览器加载初探
- 警惕你的开发工具
- JS模块化
- webpack
- 打包原理
- 异步加载
- gulp
- 命名规范
- 接口开发
- sea.js学习
- require.js学习
- react学习
- react笔记
- vue学习
- vue3
- 工具、技巧
- 临时笔记
- 怎么维护好开源项目
- 待办
- 对前端MVV*C框架的思考
- jquery问题
- 临时
- 好文
- 节流防抖