WEB Node-JS 服务器搭建
阅读原文时间:2023年07月14日阅读:1

一、创建express

1.创建一个单独文件

2.打开命令面板,进入该文件

3.npm config set registry = https://registry.npm.taobao.org(

4.npm config list(查看是否成功代理)

5.百度express第一个链接进去查看express安装

第一步:npm install express-generator -g 创建一个骨架

第二步:express --view=pug myapp 创建一个名字为myapp(自拟)的应用

第三步:cd myapp 进入应用目录

第四步:npm install 安装所需要的依赖,一般为内部依赖在node_modules文件夹下

  我们使用的是mongoose,Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具,在安装mongodb以后,用npm install mongoose命令行安装依赖。安装成功后,就可以通过 require('mongoose') 来使用。

第五步:npm start 启动应用

二、简述express应用下的文件

1.bin目录:www文件配置应用端口

var port = normalizePort(process.env.PORT || '5200');

  即,端口为5200,可以自行更改

2.node_modules目录:放的是内置依赖

  我们用的jQuery、esayUi都可以放在里面,可以手动增加依赖,在该应用终端下npm install (依赖名) --save 一般我们都放在内置里面所有--save,也可以不用

3.public目录:放置静态内容

  有图片,css样式,JavaScript,和静态页面,与我们平时写的一样。

4.routes目录:路由-表现层

  导入业务:

const xxxService = require("../service/xxxService");

  导出路由:

module.exports = router;

5.service目录:业务层

  导入链路操作:

const xxxsDao = require("../dao/xxxsDao");

  导出其操作方法:

module.exports = { xxx, xxx }

接收路由routes传来的数据,进行进一步业务处理传输给Dao层(数据链路层),dao层返回数据回来,然后传给路由routes表现层。

6.dao目录:数据链路层

  具体是进行对数据库的操作,一般为增删查改。

1.在dao下还有一个models文件夹,放置数据库模板。

例如:创建一个用户模板booksModel

//搭骨架
const mongoose = require("mongoose");
const booksSchema = new mongoose.Schema({ //创建骨架,//创建了一个users骨架,schema是mongoose里会用到的一种数据模式,可以理解为表结构的定义;每个schema会映射到mongodb中的一个collection,它不具备操作数据库的能力
name: String,//数据库里面的数据类型和其对应名字,键对值类型
headImg: String,
author: String,
press: String,
inventory: String,
}, {
versionKey: false
});
const booksModle = mongoose.model("books", booksSchema, "books"); //根据骨架创建模板,第一个骨架的名字,自定义的;第二个骨架;第三个数据库的db名字 模板就有了
module.exports = booksModle;//然后将其模板导出

2.而dao.js文件一般就是对数据的操作了。

例:create(object)增  deleteOne{id}删  find()查询全部  update({ id}, { $set: object })根据id查找然后修改

3.还有一个db.js。

里面是连接数据库的操作。

//连接数据库
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/tushuguan", {//xxx表示连接的数据库名
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection.on("connected", function () {//connected事件来监听连接成功
console.log("mongoose已经成功连接上");
});
require('./models/booksModel');

三、跨域问题(同源策略)——代理服务器

  首先我们不得不提起一个概念——同源策略,所谓同源指域名、协议、端口均相同,而一个浏览器不能同时执行其他网站的脚本,由浏览器的同源策略造成,施加的安全限制。

  因此我们就想到了用跨域来解决同源问题,但是跨域又会受三种限制:

  1. Cookie、LocalStorage和IndexDB无法读取,同源,登录可以缓存,共享本地存储数据

  2. DOM无法获得

  3. Ajax请求不能发送

      若是我们一定要跨域呢?那么就有以下的方法解决同源策略的方案:

      1、JsonP     2、cors方针(报错推荐)    3、代理服务器(首选)

      接下来我们就了解一下代理服务器的工作原理和方法。

      代理服务器的访问过程:浏览器=>代理服务器=>被代理的服务器,返回就是方向反过来传递。代理服务的作用就是起一个中转作业,将浏览器的请求转发到代理服务器,并且将返回结果原封不动的传回给浏览器。而我们搭建代理服务器的方法和搭建主服务器类似,都使用了express、NodeJS等技术。

      首先我们需要通过命令行 “express --view=pug proxyapp” 创建新的文件夹,再次重复创建express。代理服务就在新的文件夹中操作。

      其次进行配置。需要借助两个npm包,一个是web开发框架express,一个是express中间件http-proxy-middleware。“npm install http-proxy-middleware --save”。

      现在我们有了两个工程文件:一个我们主服务(被代理服务器)叫myapp(3000端口),一个代理服务器叫proxyapp(5200端口)。

第一步:搭建接口服务器,接口服务器端口号为5200自己根据情况定义。

      在工程化下,我们在proxyapp代理服务器下创建一个util工具文件夹,专门放一些工具。创建options.js文件,代码如下:

module.exports = {
target: "http://127.0.0.1:3000",//这里是被代理的端口号,目标网站
changeOrigin: true,//changeOrigin是否更改host。true为更改,false为不更改(默认值)
pathRewrite: {//pathRewrite路径重写
'^/api': '/', //rewrite path
}
}
//直接导出

第二步:在proxyapp下的app.js文件设置代理转发

//代理转发,自动的
const proxy = require("http-proxy-middleware"); //导入第三方模块
const options = require("./util/options");
app.use("/api", proxy(options));

第三步:在页面的ajax请求里面的url书写如下

url:"./api/xxx"(xxx为正常访问的地址)

  最后,代理转发搭建好了,我们就可以在代理服务器的public文件夹中写静态页面,在静态页面的书写中也要注意使用工程化。