微信小程序怎么开店_node通过express搭建自己的效劳器

  • 栏目:公司新闻 时间:2021-01-11 13:58 分享新闻到:
<返回列表

node通过express搭建自己的服务器       本篇文章主要介绍了node通过express搭建自己的服务器 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

前言

为了模拟项目上线,我们就需要一个服务器去提供API给我们调用数据。这次我采用express框架去写API接口。所有请求都是通过ajax请求去请求服务器来返回数据。第一次用node写后端,基本就是摸着石头的过河,文中有什么不足不处欢迎指出。

安装express框架

传送门:

然后介绍一下需要引入的中间件,node本身提供了一些库。我们可以直接通过require去引用,对于未提供的库,我们也可以通过手动npm去安装

var fs = require('fs'); 操作文件模块
var http = require('http'); http模块
var url = require('url'); 获取url信息模块
var qs = require('querystring'); 处理url参数模块
var path = require('path'); 文件路径模块
var bodyParser = require('body-parser'); 请求体对象化 (必须)否则后台无法解析前端发送的body内容

接下来直接启用模块

app.use(bodyParser.json());
// 访问静态资源文件 这里是访问所有dist目录下的静态资源文件
app.use(express.static(path.resolve(__dirname, '../dist')))
app.use(express.static('public'));
// 因为是单页应用 所有请求都走/
app.get('/', function(req, res) {
 const html = fs.readFile(path.resolve(__dirname, '../'), 'utf-8');
 res.send(html)
//处理请求跨域
app.all('*', function(req, res, next) {
 res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Headers", "X-Requested-With");
 res.header("Content-Type", "application/json;charset=utf-8");
 res.header("Access-Control-Allow-Headers", "content-type");
 next();

准备工作做完可以开始动手写接口了。关于数据库可以模拟一个json,也可以真实模拟上线数据库。

下面会划成3块说明——数据库的对接、请求的操作、文件请求的操作。

数据库连接

这里我假设你已经安装了mongodb数据库并成功启用。仔细阅读express教程你会发现框架提供了对mongodb的支持,mongodb有非常多的扩展插件去使用该数据库 比如mongoose。这里我们使用express官方提供的mongoskin来链接数据库。

$ npm install mongoskin
#####官方实例
var db = require('mongoskin').db('localhost:27017/animals');
db.collection('mamals').find().toArray(function(err, result) {
 if (err) throw err;
 console.log(result);

安装成功后 ,我们就首先把使用的数据库引入,代码如下

var db = require('mongoskin').db('mongodb://localhost:27017/blog');
var ObjectId = require('mongodb').ObjectID;

以上代码表示我们成功连接了blog数据库并且启用了私有ID,objectID是mongodb生成数据自动添加的ID。可以直接拿来用。到这里数据库和服务器就已经对接完毕了。

对前端发送的请求进行处理

处理get请求

 * 获取文章信息
app.get('/', function (req, res) {
 获取请求参数
 var arg = qs.parse(url.parse(req.url).query);
 var id = arg.id;
 链接数据库根据参数查找文档并返回
 db.collection('articleList').find({ "_id": ObjectId(id)}).toArray(function(err, result) {
 if (err) throw err;
 console.log(result)
 res.end(JSON.stringify(result))

以上代码就实现了对一个get请求的处理,通过参数模块获取了url的参数,db也就是已经连接的数据库。根据ID对‘articleList'的数据表进行搜索,处理完毕后 通过res.end()返回数据结束响应。

处理post请求

 * 提交留言信息
app.post('/board/post', function (req, res) {
 获取请求参数
 var data = {
 date: req.body.date,
 name: req.body.name,
 content: req.body.content,
 time: req.body.time,
 position: req.body.position
 链接数据库并插入数据
 db.collection('board').insert(data, function(err, result) {
 if(err) {
 res.end('Error:'+ err)
 res.end('提交成功')

post请求的参数获取和get不同 可以直接通过req.body去获取前端传输的请求体。通过js对象的方式去获取参数。然后根据参数执行数据库操作。到此,基本的请求也就介绍完毕了。下面说下怎么处理图片的上传此类常见的文件操作需求。

对前端的文件请求进行处理

为了简化操作,我们可以引入multer模块来处理文件,代码如下

var multer = require('multer');
var storage = multer.diskStorage({
 //设置上传后文件路径,uploads文件夹会自动创建。
 destination: function (req, file, cb) {
 cb(null, './public/uploads')
 //给上传文件重命名,获取添加后缀名
 filename: function (req, file, cb) {
 var fileFormat = (file.originalname).split(".");
 cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
//生成上传模块,让API调用
var upload = multer({
 storage: storage
}).single('file');

以上代码就成功引入了文件上传模块,通过该模块我们可以快速生成相应内容,具体使用方法可以查看官方文档。准备工作完成后,在项目中使用:

 * 图片上传
app.post('/upload', function (req, res) {
 upload(req, res, function (err) {
 if (err) {
 console.log(err)
 return
 console.log(req.file)
 res.end(JSON.stringify(req.file))
//图片上传到服务器 ,向客户端返回文件信息
 比如文件的存储位置,之后就可以通过地址访问服务器的图片
 * 图片删除
app.post('/image/delete', function (req, res) {
 fs.unlink(req.body.path, function(err) {
 if (err) {
 return console.error(err);
 res.end("文件删除成功!");

这里上传图片我们就直接使用了直接之前已经写好的upload模块,当该接口请求成功时 ,文件就已经上传成功了,如果你需要一个预览过程,那不应该直接调用上传接口 。通过原生node fs模块 我们也能对添加的文件进行删除,修改操作。

上线以及上线后遇到的history模式的刷新问题

上线过程我们可以当作就是换一台电脑跑程序,这里我用的是阿里云的服务器。在云服务器安装好环境好,把项目克隆进去 ,再装个forever之类的永久运行库,start ~ok 这样你的项目就永远在运行了。如果需要www访问 ,还需要买个dns解析 和域名,指向你的服务器。

以上我们如果在本地跑项目基本已经可以没问题。但项目上线后一刷新。啊啦??404什么鬼?打开百度一查。那炉火多~~当前端启用hisory模式,后台也必须开启对history的支持。express 环境如下:

var history = require('connect-history-api-fallback');
var connect = require('connect');
///////
app.use(history());

更新代码刷新~OK 完美!

总结

想学好一样东西,需要长久的积累。作为一个前端,一些服务器数据库的知识除了可以帮助我们更好的跟兄弟(后端)交流,对前端来说也是如鱼得水一般的存在。

分享新闻到:

更多阅读

网上商城系统建设-剖析建网站系统软件的

公司新闻 2021-01-15
现在是互联网时代,而互联网经济发展也非常火热,甚至让菜鸟站长都想要制作一个网站,想...
查看全文

餐饮小程序的7种玩法-广告设计师

公司新闻 2021-01-13
对于广告宣传企业和专 业设计方案企业的要求,塑造具有综合性素养和专业技能的平面图...
查看全文

广州企业网站建设套餐-企业做互联网营销

公司新闻 2021-01-12
伴随着互连网危害的进一步扩张,大家对互联网营销推广了解的进一步加重,及其出現的越来...
查看全文
返回全部新闻


区域站点: 南丰县微信小程序开发教程   南宫市小程序开发模板   囊谦县微信小程序开发者工具   南和县签到小程序   南华县微信小程序开发教程   南江县小程序开发模板   南京市微信小程序开发者工具   南靖县签到小程序   南康市微信小程序开发教程   南乐县小程序开发模板   南陵县微信小程序开发者工具   南宁市签到小程序   南平市微信小程序开发教程   南皮县小程序开发模板   南市区微信小程序开发者工具   南通市签到小程序   南投县微信小程序开发教程   南雄市小程序开发模板   南溪县微信小程序开发者工具   南阳市签到小程序   南漳县微信小程序开发教程   南召县小程序开发模板   南郑县微信小程序开发者工具   那坡县签到小程序   那曲县微信小程序开发教程   纳雍县小程序开发模板   讷河市微信小程序开发者工具   内黄县签到小程序   内江市微信小程序开发教程   内丘县小程序开发模板   内乡县微信小程序开发者工具   嫩江市签到小程序   聂荣县微信小程序开发教程   尼玛县小程序开发模板   尼木县微信小程序开发者工具   宁安市签到小程序   宁波市微信小程序开发教程   宁城县小程序开发模板   宁德市微信小程序开发者工具   宁都县签到小程序   宁国市微信小程序开发教程   宁海县小程序开发模板   宁化县微信小程序开发者工具   宁晋县签到小程序   宁陵县微信小程序开发教程   宁明县小程序开发模板   宁南县微信小程序开发者工具   宁强县签到小程序   宁陕县微信小程序开发教程   宁武县小程序开发模板   宁乡市微信小程序开发者工具   宁阳县签到小程序   宁远县微信小程序开发教程   农安县小程序开发模板   磐安县微信小程序开发者工具   盘锦市签到小程序   盘山县微信小程序开发教程   磐石市小程序开发模板   盘州市微信小程序开发者工具   蓬安县签到小程序   澎湖县微信小程序开发教程   蓬莱市小程序开发模板   彭山县微信小程序开发者工具   蓬溪县签到小程序   彭阳县微信小程序开发教程   彭泽县小程序开发模板   彭州市微信小程序开发者工具   偏关县签到小程序   平安县微信小程序开发教程   平昌县小程序开发模板   平定县微信小程序开发者工具   屏东县签到小程序   平度市微信小程序开发教程   平果县小程序开发模板   平和县微信小程序开发者工具   平湖市签到小程序   平江县微信小程序开发教程   平乐县小程序开发模板   平凉市微信小程序开发者工具   平利县签到小程序   平罗县微信小程序开发教程   平陆县小程序开发模板   屏南县微信小程序开发者工具   平泉市签到小程序   屏山县微信小程序开发教程   平顺县小程序开发模板   平塘县微信小程序开发者工具   平潭县签到小程序   平武县微信小程序开发教程   萍乡市小程序开发模板   平乡县微信小程序开发者工具   平阳县签到小程序   平遥县微信小程序开发教程   平阴县小程序开发模板   平邑县微信小程序开发者工具   平远县签到小程序   平舆县微信小程序开发教程   皮山县小程序开发模板   普安县微信小程序开发者工具   浦北县签到小程序   浦城县微信小程序开发教程   普洱市小程序开发模板   普格县微信小程序开发者工具   浦江县签到小程序   普兰县微信小程序开发教程   普宁市小程序开发模板   莆田市微信小程序开发者工具   迁安市签到小程序   乾安县微信小程序开发教程   潜江市小程序开发模板   潜山市微信小程序开发者工具  

友情链接: 微信开发小程序步 微信小程序页面制 微信小程序快捷开 小程序开发教程 手机版

Copyright © 2002-2020 微信小程序开发者工具_签到小程序_微信小程序开发教程_小程序开发模板_留言小程序 版权所有 (网站地图) 备案号:粤ICP备10235580号