一、创建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. Flutter 添加阴影效果

    Container( width: double.infinity, height: ScreenUtil.getInstance().setHeight(500), decoration: BoxD ...

  2. 使用Python完成SAP客户端的打开和系统登陆

    最近小爬一直思忖着如何将以前写的一些半自动化程序转为全自动化,这其中就涉及到SAP的打开和登录过程.我们都知道,SAP原生的“脚本录制和回放”功能是在用户进入到某一个SAP”用户指定系统“后才可以启用 ...

  3. 浪潮服务器装linux系统无法识别硬盘

    先说无法识别硬盘的原因是没有安装和系统相对应的raid驱动. 公司需要两台Linux的物理服务器来部署业务系统. 客户给了两台浪潮的服务器. 1.先把linux系统刻录到u盘 2要先看一下raid卡的 ...

  4. 洛谷$2014$ 选课 背包类树形$DP$

    luogu Sol 阶段和状态都是树形DP板子题,这里只讲一下背包的部分(转移)叭 它其实是一个分组背包模型,具体理解如下: 对于一个结点x,它由它的子结点y转移而来 在子结点y为根的树中可以选不同数 ...

  5. 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  6. 「Luogu P2508」[HAOI2008]圆上的整点 解题报告

    题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...

  7. SpringBoot-2.1.1系列一:使用https

    1.什么是https? HTTPS中文名称:超文本传输安全协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要 ...

  8. 【转】c#中数组赋值方法

    C#中数组复制有多种方法,数组间的复制 ,,,};int [] alias = pins; 这里出了错误,也是错误的根源,以上代码并没有出错,但是根本不是复制,因为pins和alias都是引用,存在于 ...

  9. c++ beep 演奏一次质量不高的天空之城

    beep函数用法: beep(HZ,time); hz是发出多少赫兹声音,time是发声时间(ms) 话不多说,上代码 #include <cstdio> #include <win ...

  10. 【记】创建 VirtualBoxClient COM 对象失败. 应用程序将被中断

    1. 在本地64位win7系统安装VirtualBox完,启动时提示错误 原因:兼容性造成的 按照下图显示修改VirtualBox快捷方式的兼容性 2. 启动虚拟机时,提示 点击弹出框的确定按钮后,接 ...