查看版本号:
npm -v
升级npm:
npm install --global npm
npm i -g npm
常用命令:
npm init -y
npm i -S 包名
npm un -S 包名
npm help
npm 命令 --help
原生的 http 在某些方面表现不足以应对我们的开发需求,所以我们就需要使用框架来加快我们的开发效率,框架的目的就是提高效率,让我们的代码更高度统一。
在node 中,有很多 Web 开发框架,我们这里以学习 express
为主。
var express = require('express');
var app = express();
// 当服务器收到 get 请求 / 的时候,执行回调处理函数
app.get('/', function (req, res) {
// 在 Express 中可以直接通过 req.query 来获取查询字符串参数
console.log(req.query)
res.send('hello express');
});
app.get('/pinglun',funciton(req,res){
// req.query
// 在 Epress 中使用模板引擎有更好的方式: res.render ('文件名',{模板对象})
// art-template 结合 Express 来使用
});
// 公开指定目录,只要这样做了,你就可以直接通过 /public/xx 的方式访问 public 目录中的所有资源了
app.use('/public/',express.static('./public/'));
// 相当于 server.listen
app.listen(3000,function(){
console.log('server is running...');
});
安装:
npm install --save express
hello world:
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('hello express!'));
app.listen(3000, () => console.log('app is running on 3000....'))
概念:一个端口就是一个路由
路由就是一张表;这个表有具体的映射关系;
get:
// 当你请求 / 的时候,对应相应的功能也就是后面的func
app.get('/',funciton (req, res) {
res.send('hello world')
})
post:
// 当你请求 / 的时候,对应相应的功能也就是后面的func
app.post('/',funciton (req, res){
res.send('this is post req')
})
// 直接访问具体的路径
app.use(express.static('public'));
// 这个写法比较好,两个都可以
// '/static' 这里是个别名 可以起其它别名
app.use('/static',express.static('public'));
app.use('/static',express.static(path.join(__dirname,'public')));
https://github.com/aui/art-template仓库
https://aui.github.io/art-template/中文文档
安装:
npm i -S art-template
npm i -S express-art-template
配置:
app.engine('art',require('express-atr-template'));
使用:
app.get('/',funciton(req, res) {
// express 默认回去项目中国的views 中去找 index.html
res.render('index.html', {
title: 'hello world'
})
})
如果希望修改默认的 view
视图渲染储存目录,可以:
// 第一个参数 别写错
app.set('views', 目录路径);
回到首页
Express 内置了一个API, 可以直接 req.query
req.query
在 Express 中没有内置的表单 POST 请求体的 API,这里我们需要使用一个第三方包: body-parser
安装:
npm install body-parser -S
配置:
// 注意: 一定配置模板引擎和 body-parser 一定要再 app.user(router) 挂载路由之前
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
nodemon
来解决我们频繁修改代码重启服务器问题:
安装:
npm i -g nodemon
使用:
nodemon app.js
只要是 nodemon
启动的服务,它会自动监视你代码是否改动,改动了自动刷新
文件操作路径:
模块操作路径:
// 这里如果忽略了 . 也是磁盘根目录
require('/data/foo.js')
// 相对路径
require('./data/foo.js')
// 模块加载的路径中的相对路径不能省略 ./
function fn(callback) {
// 这里相当于有这段代码:
// var callback = function(data)
setTimeout(function() {
var data = 'hello';
callback(data);
}, 1000)
}
// 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
fn(function(data) {
console.log(data);
})
// 回调函数: 获取一步操作的结果
案例写不出,笔记又整理的乱。。我太难了
点击跳转Day3——MongoDB+回调地狱讲解