WEB Node-JS 服务器搭建
一、创建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');
三、跨域问题(同源策略)——代理服务器
首先我们不得不提起一个概念——同源策略,所谓同源指域名、协议、端口均相同,而一个浏览器不能同时执行其他网站的脚本,由浏览器的同源策略造成,施加的安全限制。
因此我们就想到了用跨域来解决同源问题,但是跨域又会受三种限制:
- Cookie、LocalStorage和IndexDB无法读取,同源,登录可以缓存,共享本地存储数据
- DOM无法获得
- 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 服务器搭建的更多相关文章
- 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口
由于微信的小程序只支持不带端口的域名接口,不支持IP地址和接口,所以我们需要映射到80端口并绑定备案过的域名才能被微信小程序访问到.简单点就是接口需要 https 协议才行,找了许久的免费的数据库与n ...
- node.js服务器搭建
//1.导入http 核心模块 const http = require("http"); //2.调用http.createServer 方法,创建一个web 服务器对象 con ...
- 搭建一个简单的node.js服务器
第一步:安装node.js.可以去官网:https://nodejs.org/en/进行下载. 查看是否成功,只需在控制台输入 node -v.出现版本号的话,就证明成功了. 第二步:编写node.j ...
- paip.最好的脚本语言node js 环境搭建连接mysql
paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world .js 2 #---------模 ...
- Node.js 环境搭建及简单应用
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型.如果你想创建自己的服务,那么Node.js是一个非 ...
- node.js环境搭建
(1)Node.js安装 Node.js安装包及源码下载地址为: https://nodejs.org/download/ , 双击下载后的安装包.msi,检查Node.js版本命令:node - ...
- Node.js环境搭建和学习(windwos环境)
Node.js环境搭建和学习 一.环境搭建 1.下载安装文件 下载地址http://nodejs-org.qiniudn.com/下载Node.js环境安装包,根据操作系统下载对应的安装包 下载地址 ...
- Node.js环境搭建&&npm安装
Node.js环境搭建 什么使Node.js呢?我们知道JavaScript开始作为客户端语言,但早已在浏览器端一统江湖,这时,野心越来越大,它就想向服务器端拓展了,于是Node.js就是这样的,我们 ...
- nodejs,node原生服务器搭建实例
nodejs,node原生服务器搭建实例
- 用Node.JS+MongoDB搭建个人博客(页面模板)(五)(结束)
<差不多先生> 我是差不多先生,我的差不多是天生.也代表我很天真,也代表我是个闲人.这差不多的人生,总是见缝插针. 求学的道路上总是孤独的,即使别人不理解我,认为我是奇葩!但没关系,我会坚 ...
随机推荐
- 今天IT告告诉我,我电脑上的java jdk属性收费滴!需卸载
敲着代码,IT突然跑来说,你电脑的Jdk版本属于收费版,目前需要卸载!啊哦...手贱!每次有更新我都更新了,Java要收费老早之前耳闻了,但是俺很少做java,一般都在.Net,所以忽略鸟.. 于是G ...
- HBase 原理
遗留问题: 数据在更新时首先写入Log(WAL log)和内存(MemStore)中,MemStore中的数据是排序的,当MemStore累计到一定阈值时,就会创建一个新的MemStore,并且将老的 ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- git之github解决冲突
1.先创建一个txt文件,并进行编辑 2.然后推送到github,过程看之前的教程. 3.在另一个文件夹拉取(用小乌龟拉取),分别在克隆文件夹和原本文件夹操作test.txt. 4.把本体推送给服务器 ...
- 定位布局中关于z-index的一些问题
定位布局中关于z-index的一些问题 使不同父元素的子元素不会被其他父元素遮盖 背景 两父元素相互遮盖(或部分遮盖) html如下 <div class="main"> ...
- python版飞机大战代码简易版
# -*- coding:utf-8 -*- import pygame import sys from pygame.locals import * from pygame.font import ...
- 【接口测试】使用httpClient获取cookies+携带获取的cookies访问get接口
数据准备 在本机或者远端机器安装部署moco-runner(参考:https://blog.csdn.net/qq_32706349/article/details/80472445) 这里我们只需要 ...
- (三)Django模板语言
一.字典,列表,类在template模板中的使用 在视图函数中,即views.py中进行传值操作,可通过render方法,进行传值 from django.shortcuts import rende ...
- 【转】C#中base关键字的几种用法:base()
转:https://blog.csdn.net/cplvfx/article/details/82982862 base其实最大的使用地方在面相对象开发的多态性上,base可以完成创建派生类实例时调用 ...
- 【转】Eclipse插件收藏列表
使用了多年了Eclipse每个人都有自己的插件私藏列表,本系列文章会记录Eclipse市场推荐的个人私藏插件列表,希望对大家有帮助. 这一期的主人公是Zous Pantalons. viPlugin ...