Node实践总结2——views
来源:互联网 发布:linux查看被占用的内存 编辑:程序博客网 时间:2024/05/22 00:05
views
既然是写web应用,自然少不了网页了。所以我打算先写视图的部分,这一块相较其他部分也更简单一些。
网页模板
koa2内建支持ejs和jade(由于版权原因已经更名为pug)网页模板,给开发带来了一些便利。
ejs更接近与原生的html代码,只是将变量、循环等部分嵌入其中,习惯jsp的同学可能会更容易接受。
jade模板第一眼就给人一种非常geek的感觉,整个代码没有html那么多繁琐冗余的闭合标签和尖括号,取而代之的是整齐的缩进来体现各个DOM节点的层级关系(类似于Python),几乎没有一句废话,而且jade模板还有特别的mixins
语法,可以函数式的调用html块代码,jade模板的each in
语法也给些循环带来了很多方便关于jade语法,我之前也写过一篇博客。
下面这个是我工程中的一个例子
doctype htmlhtml head meta(charset='utf-8') title= title link(rel='stylesheet' href='http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css') link(rel='stylesheet' href='/stylesheets/mycss.css') script(src='http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js') script(src='http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js') script. $(function (){ $(document).ready(function(){ $('.btn-search').click(search); $('td:last-child').each(function() { if($.trim($(this).text()) == 'true') { //根据特定字段决定该行的底色 $(this).parent().addClass('success'); } else { $(this).parent().addClass('danger'); } }); }); }); function search() { let content = $('#searchBox').val(); if (content) { $.post('/waf_log',{content:content},function(result){ //AJAX let length = result.len; if ($.isEmptyObject(result.logs)) { //如果没有查询到数据则返回提示 alert(` No result matched the given condition! Please retry!`); } else { //如果查询到数据则动态生成表格 let tbody = $('tbody'); tbody.html(""); for (var i = 0;i<length;i++) { let tr = $('<tr></tr>'); tr.appendTo(tbody); $('<td></td>').text(result.logs[i].id).appendTo(tr); $('<td></td>').text(result.logs[i].time).appendTo(tr); $('<td></td>').text(result.logs[i].username).appendTo(tr); $('<td></td>').text(result.logs[i].function).appendTo(tr); $('<td></td>').text(result.logs[i].url).appendTo(tr); $('<td></td>').text(result.logs[i].param).appendTo(tr); $('<td></td>').text(result.logs[i].result).appendTo(tr); if ($.trim(result.logs[i].result) == 'true') { tr.addClass('success'); } else { tr.addClass('danger'); } } } }); } else { alert('There is no condition!'); } } body div.container div.row ul.list-inline li.col-lg-3.nonpadding p.content-title 日志 li.col-lg-6.nonpadding li.float-right.col-lg-3.nonpadding div.input-group input#searchBox.form-control(type='text',placeholder='输入关键字,支持模糊查询',required) span.input-group-btn input.btn.btn-warning.btn-search(type='submit',value='搜索') div#table.row table.table thead tr th 序号(id) th 时间(time) th 用户名(username) th 访问的功能(function) th 访问的URL(url) th 参数(param) th 操作结果(result) tbody each log in logs tr each val in log td #{val}
不使用模板
在后来学习的过程中,才知道很多项目现在已经不使用这些模板了,取而代之的是vue或者Angular这类前端框架,但是我时间有限也不打算短期之内学的太杂,暂时还没有学习这部分的知识,先把node学明白了再去看也许会更好。
0 0
- Node实践总结2——views
- Node实践总结3——routes
- Node实践总结5——AJAX
- Node实践总结1——快速开始
- Node实践总结4——数据库操作
- Node实践总结6——多表查询
- Node.js的实践总结
- 不完全node实践教程-总结
- View编程指南2—Views
- 基于How To Tango With Django 1.9的重新实践(6)——Models, Templates and Views
- Android ApiDemo学习(四)Views——2 autocomplete
- Views概念总结
- Views概念总结
- Views概念总结
- AndroidAnnotations——Injecting Views视图注入
- AndroidAnnotations——Injecting Views视图注入
- 【UML实践】——实战总结
- Linux学习总结——实践
- @Resource与@Autowired注解的区别
- codeforce-748A
- Shell script的语法二:判断命令
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- 循环广告位组件的实现
- Node实践总结2——views
- Excel多级下拉菜单联动自动匹配内容
- 数据源切换异常 导致数据源切换失败
- 13张图,带你认识大学各专业
- MongoDB学习
- Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息
- maven 下载repository太慢
- unity 通过使用 photon networking Pun 实现 HTC Vive VR的多人联网。进阶版 《一》
- iOS UIView - UIViewTransition动画