最近在一个项目中,经常会遇到一些case需要追查,直接到数据中进行grep,效率太低,耗费大量时间,于是学习了express搭建一个可视化前端,对程序进行打点,追查到底哪一部分出了问题。现在总结一下:
如何入门?
入门可以直接参考byvoid的Nodejs开发指南,内容讲的非常详细,直接有实例代码。需要说明的是express目前生成的模版不是ejs,而是jade。
对于javascript/css/jquery的学习,可以使用xxx菜鸟教程,里面的实例也比较清晰。
如何安装express
目前支持两个版本,之前书上讲的不可用,需要按照下面的方式安装1
2npm install -g express-generator@3
npm install -g express-generator@4
一些细节问题
1. 如何从后端向前端传递数据
使用如下方式, 其中key是jade可以拿到的访问数据的key,data是具体的数据1
2
3res.render('index',{
key : data,
});
在jade中获取的数据可以通过#{key}来获取
2. 后端如何获取前端传递过来的数据?
首先,前端的控件,比如文本框,必须要有name字段, 后段是根据name字段来取到最终的数据的。
后端使用方法:1
2获取控件上的值 : req.body.name
打印body全部数据 : JSON.stringify(req.body)
3. jade中如何使用js
比如弹出一个提示框 && 添加onclick操作(需要在button添加onclick事件)1
2
3
4
5script.
alert('use js in jade');
function click_func() {
alert('use js in jade');
}
另外:jade本身就支持for/if等语法,如果要打印数据需要使用#{xx}来修饰变量
4. 如何使用bootstrap
安装bootstrap, 在app.js同级目录下执行
1
2npm install bootstrap --save
npm install jquery --save打开app.js, 找到express.static, 下面添加一行
1
2#app.use(express.static(path.join(__dirname, 'public')))
app.use('/lib',express.static(path.join(__dirname, 'node_modules')));在views下创建includes目录,在目录下新建head.jade, 写入如下内容
1
2
3link(href="/lib/bootstrap/dist/css/bootstrap.min.css", rel="stylesheet")
script(src="/libs/jquery/dist/jquery.min.js")
script(src="/libs/bootstrap/dist/js/bootstrap.min.js")在layout.jade中引入head.jade
1
2
3
4
5
6
7
8doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
include ./includes/head
body
block content
5. 如何同步读取大文件
超过一定大小的文件,直接使用readFileSync会读取失败,网上提供了一些异步readline的方法,如果要同步读取的话,可以使用如下方法:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17var fs = require('fs')
var offset = 0;
var chunkSize = 204800;
var chunkBuffer = new Buffer(chunkSize);
var fp = fs.openSync(path, 'r');
var bytesRead = 0;
while(bytesRead = fs.readSync(fp, chunkBuffer, 0, chunkSize, offset)) {
offset += bytesRead;
var str = chunkBuffer.slice(0, bytesRead).toString();
var arr = str.split('\n');
#最后一个可能不是完整的一行,需要删掉
if(arr.length > 1) {
offset -= arr.pop().length;
}
}
这个程序的每次读取的大小的代码根据需要微调下。
6. 一些有用的网址
- html to Jade : http://html2jade.vida.io/