nodejs
2016-05-25 16:08
597 查看
一
二 代码来源于手册
js 面向对象写法推荐
三、
cmd 操作
cls 清屏
type a.txt 查看文件内容
最简express
访问不同页面,静态资源等
表单get post node a.js
post 要加 urlencodedParser
get 获取表单值 使用query; post 使用 body
a.js
对应的index.html post 提交 127.0.0.1:8081
表单文件上传
index.html
json 增删查
users.json
node.js 入门经典 第5章 P56
node.js 入门经典 第6章 P68
express web模块 P74
nodejs module.export()
a1.js b1.js a1.js部分共享
View Code
1.nodeJS 入门 方法一: a.js内容 console.log('hello'); cmd 进入到相应目录 node a.js 就可以看到结果 方法二: 直接cmd 输入 node 回车,再 console.log('hello');回车, 也可以看到结果 退出输入 .exit或者 ctrl+d 2.写一个server.js当服务器, 最终 浏览器访问127.0.0.1:8888 可看到服务器端返回的内容 server.js内容 var http=require('http'); http.createServer(function(request,response){ response.writeHead(200,{'Content-Type':'text/plain'}); response.end('hello a'); }).listen(8888); console.log('server running'); 3.安装 express [没具体应用] npm install express 4. node 可以定义变量,进行计算 cmd: node x=10 y=20 x+y 每一个都要回车,结果为30 5.读取文件内容【回调函数】 不需要等文件读取完,先执行下面的程序,等文件读取完,作为回调函数的参数返回输出。在读取文件时同时执行接下来的代码,大大提高了程序的性能。 先输出 game over 再输入文件内容 main.js var fs=require('fs'); var data=fs.readFile('a.js',function(err,data){ if(err)return console.error(err); console.log(data.toString()); }); console.log('game over'); node main.js
二 代码来源于手册
// console.log("this is a"); // emiter /* var events= require('events'); var eventEmitter = new events.EventEmitter(); eventEmitter.on('a',function(){ //注册函数a console.log('a event asf'); }); eventEmitter.emit('a'); // 触发函数a */ // stream读取文件 /* var fs=require("fs"); var data=''; var readStream= fs.createReadStream('main.js'); readStream.setEncoding('utf8'); readStream.on('data',function(chunk){ //读数据 data+=chunk; }); readStream.on('end',function(){ // 输出数据 console.log(data); }); readStream.on('error',function(err){ console.log(err.stack); }); */ // stream 写文件 // cmd下 type a.txt 是查看文件内容 /* var fs=require("fs"); var data='this is the new data'; var writeStream=fs.createWriteStream('a.txt'); writeStream.write(data,'utf8'); writeStream.end(); //标记文件末尾 writeStream.on('finish',function(){ console.log("ok"); }); writeStream.on('error',function(){ console.log(err.stack); }); */ // 把文件a 内容复制到 文件b /* var fs=require("fs"); var readStream=fs.createReadStream('main.js'); var writeStream=fs.createWriteStream("a.txt"); readStream.pipe(writeStream); console.log("game over"); */ // 压缩文件 a.txt 为 a.txt.gz /* var fs=require("fs"); var zlib=require("zlib"); fs.createReadStream('a.txt') .pipe(zlib.createGzip()) .pipe(fs.createWriteStream('a.gz')); console.log('ok2'); */ // 解压 a.txt.gz 跟传统解压的效果不太一样 /* var fs=require("fs"); var zlib=require("zlib"); fs.createReadStream('a.gz') .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream('c.txt')); console.log("ok..."); */ // 引进 hello.js 调用world()方法 /* // 方法一 var hello = require("./hello"); hello.world(); */ // 方法二 /* var Hello = require('./hello'); hello = new Hello(); hello.setName('aaa'); hello.sayHello(); */ // hello.js /* // 方法一 exports.world=function(){ console.log('hello'); } */ /* // 方法二 function Hello(){ var name; this.setName=function(setName){ name=setName; }; this.sayHello=function(){ console.log("hello "+name); }; }; module.exports = Hello; // 提供外部访问 */
js 面向对象写法推荐
<script> // js面向对象:组合构造函数+原型模式【推荐】 function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.lessons=['Math','chinese']; } Person.prototype = { // 原型模式提供 对象实例共享 constructor : Person, getName: function(){ return 'hello, '+this.name; } } var person1 = new Person('xiao',19,'software'); person1.lessons.push('biology'); var person2= new Person('he',11,'english'); alert(person1.lessons); alert(person2.lessons); alert(person1.getName === person2.getName); // 共享方法 alert(person1.getName()); </script>
三、
// stat 获取文件信息 /* var fs=require('fs'); fs.stat('nodejs.txt',function(err,stats){ if(err){ return console.error(err); } console.log(stats); console.log(stats.isFile()); }); */ // writeFile 写文件 readFile 读文件 /* var fs=require('fs'); fs.writeFile('b.txt','this is b',function(err){ if(err){ return console.error(err); } }); console.log('write is ok'); fs.readFile('b.txt',function(err,data){ if(err){ return console.err(err); } console.log("the content is: "+data.toString()); }); */ //删除文件 /* var fs=require('fs'); fs.unlink('b.txt',function(err){ if(err)return console.log(err); }); console.log('ok'); */ // 创建目录 /* var fs=require('fs'); fs.mkdir("D:/test0518/test",function(err){ if(err)return console.log(err); }); console.log('ok'); */ // 读取 目录 /* var fs=require('fs'); fs.readdir("D:/test0518",function(err,files){ if(err)return console.log(err); files.forEach(function(file){ console.log(file); }); }); console.log('ok'); */ //删除目录 /* var fs=require('fs'); fs.rmdir("D:/test0518/test",function(err,files){ if(err)return console.log(err); }); console.log('ok'); */ // 获取 请求内容 get http://127.0.0.1:8888?name=a&age=12 /* var http=require('http'); var url=require('url'); var util=require('util'); http.createServer(function(req,res){ res.writeHead(200,{'Content-type':'text/plain'}); res.end(util.inspect(url.parse(req.url,true))); }).listen(8888); */ // 获取 请求内容 post 不太懂 /* var http=require('http'); var util=require('util'); var querystring=require('querystring'); http.createServer(function(req,res){ var post=''; req.on('data',function(chunk){ post+=chunk; }); req.on('end',function(){ post=querystring.parse(post); res.end(util.inspect(post)); }); }).listen(8888); */ // 复杂版 /* var http = require('http'); var fs = require('fs'); var url = require('url'); // 创建服务器 http.createServer( function (request, response) { // 解析请求,包括文件名 var pathname = url.parse(request.url).pathname; // 输出请求的文件名 console.log("Request for " + pathname + " received."); // 从文件系统中读取请求的文件内容 fs.readFile(pathname.substr(1), function (err, data) { if (err) { console.log(err); response.writeHead(404, {'Content-Type': 'text/html'}); }else{ response.writeHead(200, {'Content-Type': 'text/html'}); response.write(data.toString()); } // 发送响应数据 response.end(); }); }).listen(8081); console.log('Server running at http://127.0.0.1:8081/'); */ // 简单版 服务端 /*var http=require('http'); var fs = require('fs'); var url = require('url'); http.createServer(function(request,response){ var pathname = url.parse(request.url).pathname; //获取url文件名 fs.readFile(pathname.substr(1),function(err,data){ //读文件 //if(err)return console.log(err); response.writeHead(200,{'Content-Type':'text/plain'}); response.end(data.toString()); }); }).listen(8888); console.log("ready.."); // http://127.0.0.1:8888/a.html */ /* express 安装四个模块 $ npm install express --save $ npm install body-parser --save $ npm install cookie-parser --save $ npm install multer --save */
cmd 操作
cls 清屏
type a.txt 查看文件内容
最简express
var express = require('express'); var app=express(); app.get('/',function(req,res){ // 127.0.0.1:8081 res.send('express page'); // 输出内容 }); app.listen(8081); console.log('server is staring');
访问不同页面,静态资源等
var express = require('express'); var app = express(); app.use(express.static('public')); //访问静态资源 : http://127.0.0.1:8081/image/123.png // 主页输出 "Hello World" app.get('/', function (req, res) { console.log('index get13'); res.send('Hello GET'); }) // POST 请求 app.post('/', function (req, res) { console.log("主页 POST 请求"); res.send('Hello POST'); }) // /del_user 页面响应 http://127.0.0.1:8081/del_user app.get('/del_user', function (req, res) { console.log("/del_user 响应 DELETE 请求"); res.send('删除页面'); }) // 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求 app.get('/ab*cd', function(req, res) { console.log("/ab*cd GET 请求"); res.send('正则匹配'); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("here http://%s:%s", host, port) })
表单get post node a.js
post 要加 urlencodedParser
get 获取表单值 使用query; post 使用 body
a.js
/** * Created by Administrator on 2016/5/27 0027. */ var express = require('express'); var app = express(); var bodyParser = require('body-parser'); // post 专用 var urlencodedParser = bodyParser.urlencoded({extended:false}) // post 专用 app.use(express.static('public')); // 静态资源 app.get('/', function (req, res) { console.log('the root is '+__dirname); res.sendFile( __dirname + "/" + "index.html" ); // 指向具体页面 }) app.post('/process_get',urlencodedParser, function (req, res) { // post 要加参数 urlencodedParser req.body.first_name 中间是body // get req.query.first_name 中间是 query // 输出 JSON 格式 response = { first_name:req.body.first_name, last_name:req.body.last_name }; console.log(response); res.end(JSON.stringify(response)); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("应用实例,访问地址为 http://%s:%s", host, port) })
对应的index.html post 提交 127.0.0.1:8081
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <form action="http://127.0.0.1:8081/process_get" method="post"> First Name: <input type="text" name="first_name"> <br> Last Name: <input type="text" name="last_name"> <input type="submit" value="Submit"> </form> </body> </html>
表单文件上传
/** * Created by Administrator on 2016/5/27 0027. */ var express = require('express'); var app = express(); var fs=require('fs'); var bodyParser = require('body-parser'); // post 专用 var urlencodedParser = bodyParser.urlencoded({extended:false}) // post 专用 var multer = require('multer'); app.use(multer({dest:'/public/'}).array('image')); app.get('/', function (req,res) { res.sendFile(__dirname+"/"+"index.html"); }) app.post('/process_get',urlencodedParser, function (req, res) { var des_file= __dirname+"/"+req.files[0].originalname; fs.readFile(req.files[0].path, function (err,data) { //读取上传的文件 fs.writeFile(des_file,data, function (err) { // 把文件 写到 目的地 if(err){ console.log(err); }else{ response={ message:'file is ok ', filenmae:req.files[0].originalname } } console.log(response); res.end(JSON.stringify(response)); }) }) }) var server = app.listen(8081); console.log('ok');
index.html
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <form action="http://127.0.0.1:8081/process_get" method="post" enctype="multipart/form-data"> <input type="file" name="image"/> <input type="submit" value="Submit"> </form> </body> </html>
json 增删查
var express = require('express'); var fs = require('fs'); var app= express(); var user={ "user5":{ "name":"a5", "passowrd":"b5", "profession":"stu5", "id":5 } } app.get('/', function (req, res) { fs.readFile(__dirname+"/"+"users.json","utf8", function (err,data) { data=JSON.parse(data); // 转成 json /* data.user5 = user.user5; //添加数据 // 方式二 data["user5"]=user["user5"]; res.end(JSON.stringify((data))); // 转回 string */ /* var user=data["user"+req.params.id]; // 取具体数据, app.get('/:id') 要加" :id " res.end(JSON.stringify(user)); // 127.0.0.1:8081/2 */ // 删除操作 var id=2; delete data["user"+id]; res.end(JSON.stringify(data)); }) }) app.listen(8081);
users.json
{ "user1": { "name": "mahesh", "password": "password1", "profession": "teacher", "id": 1 }, "user2": { "name": "suresh", "password": "password2", "profession": "librarian", "id": 2 }, "user3": { "name": "ramesh", "password": "password3", "profession": "clerk", "id": 3 } }
node.js 入门经典 第5章 P56
node.js入门经典 1.模块默认本地安装 express 可能需要全局安装 npm install express -g 2.利用package.json来安装所需要模块 a.js var _ = require('underscore'); _.each([1,2,3],function(num){ console.log("xx: "+num); }) 再创建一个名为 package.json文件 { "name":"test", "verson":"0.1", "dependencies":{ "underscore":"~1.2.1" } } 把项目中所需要的模块 都写在 dependencies中 最后, npm install 就会自动安装所需要模块 3.nodejs 处理 并发(同时发生) 4.回调 $('p').hide('slow',function(){alert(1);}); hide()函数有两个参数,一个是slow,另一个是 function(){alert(1)}; hide()函数执行完后,第二个参数(函数)会被调用 5.阻塞 程序先后执行,后面的程序无法先执行,就是阻塞 6.异步(非阻塞),都是基于回调来实现,把请求的响应结果都放到回调函数来实现。于是,可以发出N个请求,然后,哪个请求响应完了,就先后返回
node.js 入门经典 第6章 P68
回调的实现是基于事件循环。 事件循环: nodejs使用javascript的事件循环来支持异步编程。javascript围绕事件循环设计。 事件循环规则:函数必须快速返回,函数不得阻塞。长时间运行的操作必须移到另一个进程中。 异步代码解决网络问题。 // 获得 主机 端口 路径名 var url=require('url'); var requestURL='http://baidu.com:1234/pathname?query=a'; var hostname=url.parse(requestURL).hostname; // baidu.com var port=url.parse(requestURL).port; // 1234 var pathname=url.parse(requestURL).pathname; // /pathname console.log(hostname+'..'+port+'..'+pathname); // 底层http 路由 var http=require('http'); var url=require('url'); http.createServer(function(request,response){ var hostname=url.parse(request.url).hostname; var port=url.parse(request.url).port; var pathname=url.parse(request.url).pathname; // /pathname console.log(hostname+'..'+port+'..'+pathname); // hostname、port为空,不懂。。 if(pathname=='/a'){ response.writeHead(200,{'Content-Type':'text/plain'}); response.end('ao'); }else{ response.writeHead(200,{'Content-Type':'text/plain'}); response.end('null o'); } }).listen(8888); npm install <name> --save // 初次安装没有 package.json 文件 --save 无效。 安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。 console.log(__dirname); // 当前文件所在路径 // 最简express var express=require('express'); var app=express(); app.get('/', function (req,res) { res.send('hello'); }); app.listen(8888); console.log('ready') //最简 http var http=require('http'); http.createServer(function(request,response){ response.writeHead(200,{'Content-Type':'text/plain'}); response.writeHead(301,{'Location':'http://www.baidu.com'}) //301重定向 response.end('hello a'); }).listen(8888); console.log('server running'); npm install express -g 把express 安装到 C:\Users\Administrator\AppData\Roaming\npm去了
express web模块 P74
express安装 npm install express -g // 默认安装最新版 4.0+ npm install express-generator // 安装 express 4.0+要再安装这个 开始创建项目 express helloworld //创建目录 cd helloworld && npm install //安装所需要依赖包 npm start // 运行app http://localhost:3000 就可以访问内容了
nodejs module.export()
a1.js b1.js a1.js部分共享
// b3.js var a=require('./a.js'); console.log(a.test1()); console.log("a.name: "+a.name); //console.log("a: "+a); console.log("new Date(): "+new Date());
View Code
相关文章推荐
- leetcode 19. Remove Nth Node From End of List
- leetcode 25. Reverse Nodes in k-Group——很值得一看的链表题
- Nodejs学习笔记(二)
- Nodejs学习笔记(一)
- node.js读取本地的文件
- nodejs的调试(node-inspector)
- node.js windows 64位安装
- 10个常见的Node.js面试题
- 10个常见的Node.js面试题
- requirejs in node
- "same tree" and "Delete Node in a Linked List"
- Promise.all解决异步条件的收敛
- 删除node_modules文件下依赖层次过多的解决方法
- 整理node中的变量
- leetcode 24. Swap Nodes in Pairs
- 《深入浅出nodeJS》学习笔记-第一章Node简介
- node.js简单服务器创建代码
- 51NOde+大数相乘+注意找规律
- Mac下配置Nodejs开发环境
- Windows部署LeanCloud本地命令行工具