node下载地址 http://nodejs.cn/download/
开发node,记得用nodemon ,热重载 npm i -g nodemon
并用:nodemon + serve.js 启动项目,要加后缀
运行node ,在命令行,执行node 命令 node + 文件夹名称
如: node app
node.js,cmd模块加载规范
具体的加载规范 : http://www.runoob.com/nodejs/nodejs-module-system.html
1、暴露exports 对象
2 、或module.exports 对象
function Hello() {
var name;
this.setName = function(thyName) {
name = thyName;
};
this.sayHello = function() {
console.log('Hello ' + name);
};
};
module.exports = Hello;
引入
//变量名和模块名要一样,为了方便. (虽然可以,不一样)
var Hello = require('./hello');
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();
中间件是express中的概念,express.static 中间件函数;是express唯一的中间件,(意思是所有的请求都会执行的函数)
app.use(express.static('public'))
通过app.use();所有的请求都会执行这个中间件,
自定义中间件,use方法,表示执行中间件
function fun(req,res,next){
req.name = "bobo";
next();//如果有end()就结束相应了,要是没有需要显示的调用next()方法,否则不会向下走,这和express的封装有关
}
app.use(fun);//表示所有请求,都经过这个中间件
app.use("/get" ,fun)//还可以这样写,第一次参数是请求参数,表示那些请求,经过这个中间件,做特殊处理用的
下边是完整的例子
浏览器部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<h1 id="josson">hello mm</h1>
<script>
var num = [{"20":20}]
console.log(num.indexOf("20"))
josson.onclick = ()=>{
console.log("x")
var xhr =new XMLHttpRequest();
xhr.open("GET","/getDate",false);
xhr.send();
alert(xhr.response)
}
</script>
</body>
</html>
node部分,serve.js
/*
* @Author: wang
* @Date: 2018-11-30 21:33:52
* @Last Modified by: wang
* @Last Modified time: 2018-11-30 22:23:19
*/
var express = require("express");
var app = express();
app.use(express.static('public'))
function fun (req,res,next){
req.name = "josson" ;
next();
}
app.use(fun)
app.get("/getDate",(req,res)=>{
res.send(req.name)
})
app.listen(3000,()=>{
console.log("服务已开启")
})