node 一些小基础
本帖最后由 周大胖子 于 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-8i) 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) Cmdb) F:c) F:\>cd F:\node.js\tjrd) 启动:F:\node.js\tjr>node 01.jse) 浏览器访问:http://localhost:8001/f) 快捷操作:(结束node) ctrl + c在开启上一条 :上箭头g) 注意事项:每改一次node代码都需要重新启动node服务
4. URL模块使用a) var url=require('url'); //引入urlb) 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 –yesc) 该文件入口设定:”main”:”bab.js”
7. 安装第三方模块:npm install jquery(没有会自动创建 node_modules 文件夹)a) 卸载模块:npm uninstall jqiery 也可以直接手动删除b) 查看已经安装的包:npm listc) 查看模块的版本: npm info jquery【这个是查看npm官方所有的包】d) 安装指定版本: npm install jquery@1.11.0e) 注意:以后安装模块的时候我们需要把这个模块写入到package.json这个配置文件, 写入方法:i. Npm install jquery --save 写入到package.json里面的dependenciesii. 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.statb) 创建目录:fs.mkdirc) 创建写入文件:fs.writeFiled) 追加问价:fs.appendFilee) 读取文件:fs.readFilef) 读取目录:fs.readdirg) 重命名:fs.renameh) 删除目录:fs.rmdiri) 删除文件:fs.unlinkj) 从文件流中读取数据:fs.createReadStreamk) 写入文件:fs.createWriteStreaml) 管道流:m) 备注:管道流就是 先读取流然后写入到一个文件写入流 n) 备注:异步加载不能使用for循环
11. 怎么做一个登陆a) 第一步:写好模板 login/dologin/longinoutb) 第二步:引入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 为全局变量 就是每个请求都可以拿来用 相当于canbusapp.locals['userinfo'] = req.session.userinfo;// 如果已经登录就继续next();}else{// 如果没登录就跳转到登录页res.redirect('/login'); //跳转到登录页}}})g) 因为定了全局值,所以每个请求都可以调用这个useinfo (esj模板里直接写)
12. 路由模块化 【 入口文件仍然是APP.JS 该文件 只实现路由到对应模块 】a) 划分模块 【例如:商品管理、登录、用户管理】b)
页:
[1]