洞察移动政务小程序助力政府数字化转型,保障数据安全和效率提升
875
2022-09-10
nodejs
简单总结 jQuery.js:一个js库文件,主要是简化了js对DOM对象的操作 Vue.js:一个js库文件,关注于用户界面的视图开发 Node.js:理解为运行在服务端的js,是一个开发平台 Web3.js:是一个和以太坊区块链交互的js库
nvm 用来管理 nodejs 和 npm 的版本 npm 可以管理 nodejs 的第三方包 类比到python的东西 nvm => 一个可以管理python版本的工具 nodejs => python解释器,即python.exe npm => pip
node.js是事件驱动的,非阻塞I/O模型,单线程,有生态系统npm。 注意非阻塞的单线程I/O模型是通过浏览器底层WebAPI和队列实现异步来实现的
通过nvm(Node Version Manager)来管理一台计算机上的多个node版本常用命令 nvm version nvm install latest nvm install 版本号 nvm uninstall 版本号 nvm list nvm use 版本号
nvm:nodejs版本管理工具,管理nodejs版本和npm版本
npm:是随同nodejs一起安装的包管理工具,npm管理对应nodejs的第三方插件 (1)允许用户从npm服务器-别人编写好的第三方包到本地使用 (2)允许用户将自己编写的包上传到NPM服务器供别人使
nodejs本身就是web服务器,不需要apache等web服务器。 nodejs进程监听某个端口,接收到用户请求后,做相应处理后把结果返回给浏览器。
REPL:Read,Eval,Print,Loop(交互式解释器) 在REPL中编写程序(类似于在浏览器控制台写),命令行输入node即可
第一行代码 创建demo.js:console.log('hellow world'); 命令行:node demo.js
文件写入操作
var fs = require('fs');var msg = 'hello world';var filePath = './hello.txt';fs.writeFile(filePath, msg, 'utf8', function(err) { //err==null 写入成功 if (err) { console.log("fail" + err); } else { console.log('success'); }});
读文件操作
var fs = require('fs');var filePath = './hello.txt';fs.readFile(filePath, function(err, msg) { if (err) { console.log('fail'); } else { console.log(msg); msg = msg.toString('utf8'); console.log(msg); }});
__dirname,__filename,path模块
var fs = require('fs');var path = require('path');//__dirname:当前正在执行的js的文件所在的目录//__filename:当前正在执行的js的文件的绝对路径//path模块实现路径自动拼接var filePath = path.join(__dirname, 'hello.txt');fs.readFile(filePath, 'utf8', function(err, data){ if (err) { console.log('fail'); } else{ console.log(data); }});
搭建简单服务器
var = require('server = function(req, res) { //解决乱码 res.setHeader('Content-Type', 'text/plain; charset=utf-8'); //页面反应 res.write('hello 你好'); //对于每一个请求,服务器必须结束响应 //res.end(); //获取用户请求的路径req.url if (req.url === '/' || req.url === '/index') { res.end('hello index'); } else if (req.url === '/login') { res.end('hello login'); } else { res.end('404, not found'); }});//开启监听server.listen(3000, function() { console.log('server started up');});
nodejs的try-catch只能捕获同步发生的异常,不能捕获异步异常。 对于异步的异常只能通过if判断错误号(err.code)来进行错误处理。
根据用户不同请求做出不同相应页面
var = require('fs = require('fs');var path = require('path');res) { if (req.url === '/' || req.url === '/index') { var filePath = path.join(__dirname, '1.html'); fs.readFile(filePath, function(err, data) { if (err){ throw err; } else { res.end(data); } }); } else if (req.url === '/1.png') { var filePath = path.join(__dirname, '1.png'); fs.readFile(filePath, function(err, data) { if (err){ throw err; } else { res.setHeader('Content-Type', 'image/png'); res.end(data); } }); } else if (req.url === '/login') { var filePath = path.join(__dirname, '2.html'); fs.readFile(filePath, function(err, data) { if (err){ throw err; } else { res.end(data); } }); } else { res.end('404, not found'); }}).listen(3000, function() { console.log('= require('fs = require('fs');var path = require('path');var mime = require('mime');res) { var publicDir = path.join(__dirname, 'public'); var filePath = path.join(publicDir, req.url); console.log(filePath); fs.readFile(filePath, function(err, data) { if (err) { res.end('404'); } else { //通过第三方模块判断不同的资源对应的Content-Type res.setHeader('Content-Type', mime.getType(filePath)); res.end(data); } });}).listen(3000, function() { console.log('= require('fs = require('fs');var path = require('path');var mime = require('mime');res) { res.render = function(filePath) { fs.readFile(filePath, function(err, data) { if (err){ throw err; } else { res.setHeader('Content-Type', mime.getType(filePath)); res.end(data); } }); } if (req.url === '/' || req.url === '/index') { var filePath = path.join(__dirname, '1.html'); res.render(filePath); } else if (req.url === '/login') { var filePath = path.join(__dirname, '2.html'); res.render(filePath); } else { res.end('404, not found'); }}).listen(3000, function() { console.log('response对象常用成员
var = require('fs = require('fs');var path = require('path');var mime = require('mime');res) { console.log(req.headers); //对象类型请求报文头 console.log(req.rawheaders);//数组类型请求报文头 console.log(req. console.log(req.method); //请求方法 console.log(req.url); //请求文件路径 res.setHeader('Content-Type', 'text/plain; charset=utf8'); res.statusCode = 210; //设置相应状态码 res.statusMessage = 'message'; //设置状态吗对应的消息 res.writeHead(404,'not found',{ //设置相应头,权限比setHead高 'Content-Type': 'text/plain; charset=utf8' }); res.write('hello world 你好'); //向浏览器发送数据 res.end(); //完成}).listen(3000, function() { console.log('= require('fs = require('fs');var path = require('path');var mime = require('mime');var url = require('url');res) { res.render = function(filePath) { fs.readFile(filePath, function(err, data) { if (err){ throw err; } else { res.setHeader('Content-Type', mime.getType(filePath)); res.end(data); } }); } var urlObj = url.parse(req.url, true); if (req.url === '/' || req.url === '/index') { var filePath = path.join(__dirname, '1.html'); res.render(filePath); } else if (req.url.startsWith('/2.html') && req.method == 'get') { console.log(urlObj); console.log(urlObj.query); fs.readFile(path.join(__dirname, 'data.json'), 'utf8', function(err, data) { if (err && err.code != 'ENOENT') { throw err; } var list = JSON.parse(data || '[]'); list.push(urlObj.query); fs.writeFile(path.join(__dirname, 'data.json'), JSON.stringify(list), function(err) { if (err){ throw err; } console.log('success'); res.setHeader('Location', '/index'); res.statusCode = 302; res.statueMessage = 'Found'; res.end(); }); }); } else { res.end('404, not found'); }}).listen(3000, function() { console.log('= require('fs = require('fs');var path = require('path');var mime = require('mime');var url = require('url');var querystring = require('querystring');res) { res.render = function(filePath) { fs.readFile(filePath, function(err, data) { if (err){ throw err; } else { res.setHeader('Content-Type', mime.getType(filePath)); res.end(data); } }); } var urlObj = url.parse(req.url, true); //console.log(req.url); //console.log(req.method); if (req.url === '/' || req.url === '/index') { var filePath = path.join(__dirname, '1.html'); res.render(filePath); } else if (req.url.startsWith('/2.html') && req.method == 'POST') { //console.log(urlObj); //console.log(urlObj.query); fs.readFile(path.join(__dirname, 'data.json'), 'utf8', function(err, data) { if (err && err.code != 'ENOENT') { throw err; } var list = JSON.parse(data || '[]'); //因为post提交的数据可能很大,所以会分多次提交,每次提交一部分数据。此时需要监听request事件的data时间事件 //当request对象的end事件被触发时表示所有数据都提交到服务器 var array = []; req.on('data', function(chunk) { //此处的chunk就是浏览器本次提交过来的一部分数据, 类型为buffer对象 array.push(chunk); }); req.on('end', function() { //把array中的每个buffer对象集合起来转换为一个buffer对象 var postBody = Buffer.concat(array); //把获取到的buffer对象转换成一个字符串 postBody = postBody.toString('utf8'); //==>txt=aaa&url=ccc //console.log(postBody); postBody = querystring.parse(postBody); //==>{txt='aaa',url='ccc'} //console.log(postBody); list.push(postBody); fs.writeFile(path.join(__dirname, 'data.json'), JSON.stringify(list), function(err) { if (err){ throw err; } console.log('success'); res.setHeader('Location', '/index'); res.statusCode = 302; res.statueMessage = 'Found'; res.end(); }); }); }); } else { res.end('404, not found'); }}).listen(3000, function() { console.log('_ = require('underscore');var names = ['zhang', 'ming', 'hong'];var ages = [18, 19, 20];var genders = ['nan', 'nv', 'nv'];//压缩var result = _.zip(names, ages, genders);console.log(result);//解压缩result = _.unzip(result);console.log(result);
underscore的template用法
var _ = require('underscore');var html = '
加载模块时可以获取被加载模块module.exports=xxx; xxx可以是数据或者函数 可以在加载js中访问或调用module.exports返回的变量或函数
补充:express开发框架是node.js的一个模块 以后用到在学吧
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~