本帖最后由 周大胖子 于 2018-4-26 15:39 编辑
1. 引入HTTP模块: a) var http=require('http'); b) 清空指令符面板: cls
2. 用HTTP模块创建服务: a) // req获取url信息 (request) b) // res 浏览器返回响应信息 (response) c) d) http.createServer(function(req,res){ e) f) // 发送http头部 g) // HTTP状态值:200 :OK h) // 设置HTTP头部,状态码200,文件类型html,字符集utf-8 i) j) res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"}); k) l) res.write('你好 node.js'); m) n) res.write('我是第一个nodejs程序'); o) p) res.end(); //结束响应 q) r) }).listen(8001); //监听端口号8001
3. 启动: a) Cmd b) F: c) F:\>cd F:\node.js\tjr d) 启动:F:\node.js\tjr>node 01.js f) 快捷操作:(结束node) ctrl + c 在开启上一条 :上箭头 g) 注意事项:每改一次node代码都需要重新启动node服务
4. URL模块使用 a) var url=require('url'); //引入url b) url.parse() 解析URL c) url.format(urlObject) //是上面url.parse() 操作的逆向操作 d) url.resolove(from,to) 添加或者替换地址
5. 使用:supervisor 代替node 好处:改变代码后不需要重启就可以运行
6. 简写:foot = require(‘foot’);
a) 默认在目录下没有,nodejs就会去node_modules里找这个模块。 b) 如果是node_modules文件夹中的文件夹则生成package.json文件: i. F:\node.js\tjr\02\node_modules\bab>npm init –yes c) 该文件入口设定:”main”:”bab.js”
7. 安装第三方模块:npm install jquery (没有会自动创建 node_modules 文件夹) a) 卸载模块:npm uninstall jqiery 也可以直接手动删除 b) 查看已经安装的包:npm list c) 查看模块的版本: npm info jquery 【这个是查看npm官方所有的包】 e) 注意:以后安装模块的时候我们需要把这个模块写入到package.json这个配置文件, 写入方法: i. Npm install jquery --save 写入到package.json里面的dependencies ii. Npm install jquery --save-dev 写入到devDependencies
8. Package.json : 定义这个项目所需的各个模块以及项目信息 a) 第一步:CD到指定文件夹, i. npm init – yes 创建Package.json文件;强制生成 ii. npm init 创建packages.json 下一步下一步 一步步生成; b) 第二步:
9. 如果把代码发给别人,可以把node_modules文件夹全部删掉, 然后在文件夹下运行:npm install 这样就会直接更具package.json 文件内的数据 创建node_modules文件并且自行下载。(前提 最好是通过npm安装的模块自动会记录在内,但是手工的嘛—你就得自己写进去。)
10. fs模块 a) 检测是文件还是目录:fs.stat b) 创建目录:fs.mkdir c) 创建写入文件:fs.writeFile d) 追加问价:fs.appendFile e) 读取文件:fs.readFile f) 读取目录:fs.readdir g) 重命名:fs.rename h) 删除目录:fs.rmdir i) 删除文件:fs.unlink j) 从文件流中读取数据:fs.createReadStream k) 写入文件:fs.createWriteStream l) 管道流: m) 备注:管道流就是 先读取流然后写入到一个文件写入流 n) 备注:异步加载不能使用for循环
11. 怎么做一个登陆 a) 第一步:写好模板 login/dologin/longinout b) 第二步:引入session c) 第三步:login 时候 拿着这个数据去数据库里搜 d) 第四步:搜到后保存出 数据库里userinfo 的值 到session里 e) 第五步:写一个中间件(判断是否登录的), f) 第六步: // 自定义中间件====判断有没有登录 app.use(function(req,res,next){ if(req.url=='/login' || req.url=='/dologin'){ next(); }else{ if(req.session.userinfo&& req.session.userinfo.username!=''){ // 存储session的userinfo 为全局变量 就是每个请求都可以拿来用 相当于canbus app.locals['userinfo'] = req.session.userinfo; // 如果已经登录就继续 next(); }else{ // 如果没登录就跳转到登录页 res.redirect('/login'); //跳转到登录页 } } }) g) 因为定了全局值,所以每个请求都可以调用这个useinfo (esj模板里直接写)
12. 路由模块化 【 入口文件仍然是APP.JS 该文件 只实现路由到对应模块 】 a) 划分模块 【例如:商品管理、登录、用户管理】 b)
|