node.js
1.安装node.js
Node.js安装包及源码下载地址为:https://nodejs.org/en/download/
2.建立js文件,输入
var http = require('http'); http.createServer(function (request, response) { // 发送 HTTP 头部 // HTTP 状态值: 200 : OK // 内容类型: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // 发送响应数据 "Hello World" response.end('Hello World\n'); }).listen(8888); // 终端打印如下信息 console.log('Server running at http://127.0.0.1:8888/');
3.找到Node.js command prompt,输入文件路径,使用 node 命令执行以上的代码:
node server.js
4.接下来,打开浏览器访问 http://127.0.0.1:8888/,就可以写着 "Hello World"的网页。
5.安装Express开发框架://命令行输入命令
- npm install -g express
- npm install -g express-generator
6.通过express建立项目
- 新建项目
- //命令行输入命令
- express -t ejs newsproject 或者 express -e newsproject
- 按照提示进入项目目录,运行npm安装
- //进入项目目录
- cd newsproject
- //文件夹中安装npm
- npm install
- 运行项目
- //项目目录下运行命令
- node app.js
7.安装模块
进入项目文件夹
- //项目目录下运行命令
- cnpm install express -save , cnpm install superagent -save , cnpm install cheerio -save
- 此时没有报错就是安装成功了,打开文件夹,发现里面多了写文件。说明模块已经依赖成功,可以正式的编写代码了
8.使用html文件
app.engine("html",require("ejs").__express);
app.set('view engine', 'html');
cheerio模块
var fs = require('fs');//载入模块 var cheerio = require('cheerio'); var iconv = require('iconv-lite');//结果中有乱码,问题原因是fs模块不支持中文。 //通过iconv-lite先解码为中文解决 var myHtml = fs.readFileSync("a.html");//首先将网页读取为一个字符串 var $ = cheerio.load(iconv.decode(myHtml, 'gbk'));//传给cheerio.load函数, //返回值即是一个cheerio对象(类似于一个jquery对象) var t = $('html').find('hr');//然后使用find函数,通过selector查找hr元素。 var t2 = t.nextAll();//再调用 nextAll函数得到hr元素的所有兄弟结点。 t2.each(function(i, elem) { //最后在each函数中, 通过text函数将所有包含问题的元素的见容打印出来。 getContent($(this)); console.log($(this).text()); });
实例详解
创建页面,每创建一个页面,也要增加一个js文件,如图所示,增加一个register.ejs,就要在router中增加一个register.js。
router下js作用就是链接到页面
var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/', function(req, res, next) { res.render('register', { title: 'Express' }); }); module.exports = router;
然后再主要运行的app.js中添加相应的代码
var register = require('./routes/register'); app.use('/register', register);
再添加一个页面实现数据连接config文件夹下的config
var express = require('express'); var router = express.Router(); var mysql = require("mysql"); //使用连接池可以帮助我们更好的管理数据库连接。数据库连接池可以限制连接的最大数量,复用已有的连接等。 var pool = mysql.createPool({//连接池 host: 'localhost', user: 'root', password: '123456', database: 'mysql' }); 出现 cannot read property query of undefined 情况,可能是数据库没连对 function query(sql,callback){ pool.getConnection(function(err,connection){//创建的连接池中获取到一个我们需要的连接 connection.query(sql, function (err,rows) {//使用回调函数的参数connection来查询数据库 callback(err,rows); connection.release();//释放连接 }); }); } exports.query = query;
主页面显示数据 index.ejs
var express = require('express'); var router = express.Router(); var mysql=require('mysql'); var db = require("../config/config");//引入数据连接文件 /** * 显示数据页 */ router.get("/",function(req,res,next){ db.query("select * from users",function(err,rows){ if(err){ res.render("index",{title:"用户列表",datas:[]}); }else { res.render("index",{title:"用户列表",datas:rows}); } }); }); router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); module.exports = router;