赞
踩
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。
或者,直接打开一个文件夹,在文件夹的地址栏中输入cmd回车,进入终端
测试服务器是否支持node环境:node -v 回车
进入node环境:node 回车
编写代码:function sum(a,b){return a+b} sum(3,7) 回车之后,终端中就会显示sum运行后的结果10
不好的地方:代码不能长时间保存
退出:从node环境退回到命令行环境
连续两次 ctrl+c
注意:在终端中执行文件时注意路径是否正确 c:/users/wangyang/1.js ``` function sum(a, b){ return a+b; } console.log( sum(1,2) ) ``` 在终端中,执行 node 1.js,前提是命令行必须在wangyang目录下,然后通过 node 1.js 才能找到对应的文件。 如果不在同一个文件夹中 1, node abc/1.js 2, cd abc node 1.js
js文件编写好了之后,在终端中执行 node app.js 能够挂起服务,如果修改app.js文件,需要重启服务才能让修改后的代码起作用,如果重启服务
ctrl + c // 终止服务
node app.js // 启动服务 node app 也可以省略文件扩展名,简写启动服务
手动重启的方法: ctrl+c // 终止 node app.js // 执行
自动重启的方法:
npm install nodemon –g
nodemon app.js
npm install supervisors –g
supervisors app.js
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
response.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
// IP地址
console.log(request.connection.remoteAddress);
// 发送响应数据
response.end('Hello World');
}).listen(8080);
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200,{
'Content-Type':'text/html;charset=utf-8',
'Access-Control-Allow-Origin':'*'
});
console.log(request.url);
response.end();
}).listen(8080);
require("url").parse(request.url, true).query
var post = '';
request.on('data', function(chunk){
post += chunk;
});
request.on('end', function(){
post = require("querystring").parse(post); // {a:1,b:2}
});
模块化开发:
如果所有的代码都写在同一个js文件中,那么会导致文件越来越大,所以我们可以采用模块化的写法,把代码分离出来。
建立模块
比如我们做一个sum.js文件,里面写入:
module.exports = function(a, b){return a+b}
使用模块
var sum = require("./sum"); // 载入sum.js文件
sum(1, 2); // 3
NodeJS 属于 CommonJS 规范,可以理解成用 exports 输出模块,用 require 引入模块。
// step1: 先下载express模块 // npm install express // step2: 引入express模块 const express = require("express"); // step3: 使用模块 const app = express(); // 获取express对象,这个对象提供了很多功能 // 开发一个网站站点 // 定义一个路由规则 // app.get("/", callback回调函数) 语义指用户使用get方式请求我们网站的根目录时,执行callback回调函数 app.get("/", function(req, res){ // req指请求(request) res指响应(response) console.log(req.ip, "访问了服务器"); res.send("这是首页"+ req.ip.substring(7) +"访问了这个页面"); }) app.listen(8080); // 监听8080端口 65535以内
const http = require("http"); const url = require("url"); // 系统模块,无需install http.createServer(function(req, res){ res.writeHead(200, { "content-type":"text/html;charset=utf-8" }); //console.log(req.url); let router = url.parse(req.url, true); let query = router.query; if( router.pathname === "/" ){ res.end(` <form method="get" action="/chk"> 用户名:<input type="text" name="username" /><br> 密码:<input type="text" name="password" /><br> <input type="submit" value="提交" /> </form> `); }else if( router.pathname === "/chk" ){ res.write( query.username+"<br>"+query.password ); res.end(); }else{ res.end("其他的请求"); } }).listen(8080);
const http = require("http"); const url = require("url"); const querystring = require("querystring"); http.createServer(function(req, res){ // 中文乱码和html解析 res.writeHead(200, { "content-type":"text/html;charset=utf-8" }); // 路由规则 let router = url.parse(req.url, true); switch( router.pathname ){ case "/": res.end(` <form method="post" action="/chk"> 用户名:<input type="text" name="username" /><br> 密码:<input type="text" name="password" /><br> <input type="submit" value="提交" /> </form> `); break; case "/chk": // 监听 post 数据 // 得到一部分请求中的数据时,就执行的回调函数 var chunks = ""; //req.on(data)指每次发送的数据; req.on("data", function( chunk ){ //console.log( chunk.toString() ) chunks += chunk; }); //req.on(end)数据发送完成; req.on("end", function(){ //console.log(chunks) //console.log( querystring.parse(chunks) ) //console.log( querystring.stringify({ username: "123", password: "456456" }) ) var body = querystring.parse(chunks); //console.log( body.username ); res.write( body.username+"<br>"+body.password ); res.end("处理"); }) break; default: res.end(""); } }).listen(8080);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。