一、创建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文件夹中写静态页面,在静态页面的书写中也要注意使用工程化。

WEB Node-JS 服务器搭建的更多相关文章

  1. 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口

    由于微信的小程序只支持不带端口的域名接口,不支持IP地址和接口,所以我们需要映射到80端口并绑定备案过的域名才能被微信小程序访问到.简单点就是接口需要 https 协议才行,找了许久的免费的数据库与n ...

  2. node.js服务器搭建

    //1.导入http 核心模块 const http = require("http"); //2.调用http.createServer 方法,创建一个web 服务器对象 con ...

  3. 搭建一个简单的node.js服务器

    第一步:安装node.js.可以去官网:https://nodejs.org/en/进行下载. 查看是否成功,只需在控制台输入 node -v.出现版本号的话,就证明成功了. 第二步:编写node.j ...

  4. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  5. Node.js 环境搭建及简单应用

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型.如果你想创建自己的服务,那么Node.js是一个非 ...

  6. node.js环境搭建

    (1)Node.js安装 Node.js安装包及源码下载地址为: https://nodejs.org/download/   , 双击下载后的安装包.msi,检查Node.js版本命令:node - ...

  7. Node.js环境搭建和学习(windwos环境)

    Node.js环境搭建和学习 一.环境搭建 1.下载安装文件 下载地址http://nodejs-org.qiniudn.com/下载Node.js环境安装包,根据操作系统下载对应的安装包 下载地址 ...

  8. Node.js环境搭建&&npm安装

    Node.js环境搭建 什么使Node.js呢?我们知道JavaScript开始作为客户端语言,但早已在浏览器端一统江湖,这时,野心越来越大,它就想向服务器端拓展了,于是Node.js就是这样的,我们 ...

  9. nodejs,node原生服务器搭建实例

    nodejs,node原生服务器搭建实例

  10. 用Node.JS+MongoDB搭建个人博客(页面模板)(五)(结束)

    <差不多先生> 我是差不多先生,我的差不多是天生.也代表我很天真,也代表我是个闲人.这差不多的人生,总是见缝插针. 求学的道路上总是孤独的,即使别人不理解我,认为我是奇葩!但没关系,我会坚 ...

随机推荐

  1. [Linux] 使用awk比较两个文件的内容

    当需要比较A , B两个文件 , A文件中存在 , 并且把也在B文件中存在的行去除掉 , 可以使用这个awk的用法来 awk  '{if(ARGIND==1) {val[$0]}else{if($0 ...

  2. vue项目使用websocket做聊天项目总结

    一.首先我们先了解一下websocket的使用: 1.创建websocket const ws = new WebSocket("ws://192.168.31.136:9998/ws&qu ...

  3. Python深层拷贝

    import copy new_instance = copy.deepcopy(instance)

  4. ELK学习实验001:Elastic Stack简介

    1 背景介绍 在我们日常生活中,我们经常需要回顾以前发生的一些事情:或者,当出现了一些问题的时候,可以从某些地方去查找原因,寻找发生问题的痕迹.无可避免需要用到文字的.图像的等等不同形式的记录.用计算 ...

  5. Mysql 表与表之间的关系

    一.前言 二.表与表之间的关系 (一) 一对多 (二) 一对一 (三) 多对多 一.前言 研究表与表之间的关系前,先要知道将所有数据存放在一张表中的弊端: 1.结构不清晰 ---> 不致命 2. ...

  6. 清晰架构(Clean Architecture)的Go微服务: 日志管理

    良好的日志记录可以提供丰富的日志数据,便于在调试时发现问题,从而大大提高编码效率. 记录器提供的自动化信息越多越好,日志信息也需要以简洁的方式呈现,便于找到重要的数据. 日志需求: 无需修改业务代码即 ...

  7. $[NOIp2008]$双栈排序 栈/二分图/贪心

    \(Sol\) 先考虑单栈排序,怎么样的序列可以单栈排序呢?设\(a_i\)表示位置\(i\)是哪个数.\(\exist i<j<k\),都没有\(a_k<a_i<a_j\), ...

  8. SQL预处理

    每向数据库发送一条SQL语句,数据库中的SQL解释器就会将SQL语句转换成数据库底层命令,然后执行该命令完成相关的数据库操作.如果频繁的向数据库提交SQL语句,势必会增加数据库中SQL解释器的负担,进 ...

  9. 1089 狼人杀-简单版 (20 分)C语言

    以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家说:"2 号是狼人" ...

  10. Serverless Kubernetes 入门:对 Kubernetes 做减法

    作者 | 贤维  阿里巴巴高级技术专家 导读:Serverless Kubernetes 是阿里云容器服务团队对未来 Kubernetes 演进方向的一种探索,通过对 Kubernetes 做减法,降 ...