什么是Node?
是javascript的一个运行环境 它可以让javascript运行在服务器端(因为Node可以运行在服务器端)它是基于chromev8 引擎的
node的定义:node是一个后端语言,他完成了很多js不能完成的事情 比如js没有办法直接去读取本地计算机硬盘上的内容
Node的特性:以下三点特性,会让node执行的特别快!!
一、单线程 单线程可以尽可能少的减少IO的操作(io就是输入输出)
二、非阻塞式IO (I/O 输入/输出)
三、事件驱动(提高效率)
Node适用于哪些程序
适用于高IO的程序
(一)、考试系统
(二)、图文直播
(三)、站内信
express
是一个基于Node的库 里面封装了很多有用的api 可以快速让我们完成网站后台的搭建
下载 npm install --save express
路由
一、根据url的不同调用不同的后台功能模块 搭建后台功能要用到 express的Router功能
二、要用到 express的Router功能
代码中应用,
新建文件夹。(node)
一、配置文件
(一)、npm init -y
(二)npm install --save express
二、划分文件
在新建文件下建 server.js (所有路由的老大,最后每个页面请求暴露的会在这个文件夹导入,代码如下:),再在node下建立文件夹 router ,在文件夹建立每个页面相对应的文件夹。如:login.js(登陆),zhuce.js(注册),shouye.js(首页)。。。。。。等文件夹
在这些页面示例配置如下代码
//第一步,引入下载的模块,express
let express = require("express")
//要引入路由,express.Router() 引入路由
var router = express.Router()
// 首页轮播图的 http://localhost:8888/home/lujing/lunbo /home先进入home 然后是 /lujing/lunbo 以下同理
router.get("/lujing/lunbo",(req,res)=>{
res.send({msg:"我是轮播图的接口"})
})
// 首页轮列表的
router.get("/lujing/liebiao",(req,res)=>{
res.send({msg:"我是轮播图列表的接口"})
})
// 首页轮秒杀的
router.get("/lujing/miaosha",(req,res)=>{
res.send({msg:"我是轮播图的秒杀 接口"})
})
// 完成后上面的路由配置,然后暴露出去
module.exports = router
// 首页的路由配置完毕并且暴露以后,在server.js 中引入
在server.js 的文件的示例代码如下:
let express = require("express")
var server = express()
//server 是所有的路由结合的文件,所以要引用其他文件中配置暴露出来的路由
// 例如:引入 编辑好的首页配置的路由
var home = require("./router/home")
// 最后使用这些路由, 在每次进入的时候会先进入中间件
// 中间件 代码 server.use('路径',内容)
server.use("/home",home)
// 最后监听
server.listen(8888)
在浏览器中打开! 注意地址栏
以上只是在node中检查 是否得到请求结果,但是如果是前端发送请求的话,会出现跨域
解决跨域、
上上图是前后交互出现跨域的解决发法,现在是用node写的,所以用第二种方法解决
var express = require('express');
var app = express();
//设置跨域访问
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
app.get('/auth/:id/:password', function(req, res) {
res.send({id:req.params.id, name: req.params.password});
});
app.listen(3000);