知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
Egg.js+MongoDB+uni-app 開發(fā)小程序 (一) 項(xiàng)目后臺基搭建
發(fā)表時(shí)間:2021-1-5
發(fā)布人:葵宇科技
瀏覽次數(shù):165
Express 是 Node.js 社區(qū)廣泛使用的框架,簡單且擴(kuò)展性強(qiáng),非常適合做個(gè)人項(xiàng)目。但框架本身缺少約定,標(biāo)準(zhǔn)的 MVC 模型會(huì)有各種千奇百怪的寫法。Egg 按照約定進(jìn)行開發(fā),奉行『約定優(yōu)于配置』,團(tuán)隊(duì)協(xié)作成本低。
Sails 是和 Egg 一樣奉行『約定優(yōu)于配置』的框架,擴(kuò)展性也非常好。但是相比 Egg,Sails 支持 Blueprint REST API、WaterLine 這樣可擴(kuò)展的 ORM、前端集成、WebSocket 等,但這些功能都是由 Sails 提供的。而 Egg 不直接提供功能,只是集成各種功能插件,比如實(shí)現(xiàn) egg-blueprint,egg-waterline 等這樣的插件,再使用 sails-egg 框架整合這些插件就可以替代 Sails 了。
Egg的特性
提供基于 Egg 定制上層框架的能力
高度可擴(kuò)展的插件機(jī)制
內(nèi)置多進(jìn)程管理
基于Koa開發(fā),性能優(yōu)異
框架穩(wěn)定,測試覆蓋率高
漸進(jìn)式開發(fā)
MongoDB(4.2)
MongoDB是一個(gè)基于分布式文件存儲(chǔ) [1] 的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是它支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引
它的特點(diǎn)是高性能、易部署、易使用,存儲(chǔ)數(shù)據(jù)非常方便。主要功能特性有:
面向集合存儲(chǔ),易存儲(chǔ)對象類型的數(shù)據(jù)。
mongodb集群參考
模式自由。
支持動(dòng)態(tài)查詢。
支持完全索引,包含內(nèi)部對象。
支持查詢。
支持復(fù)制和故障恢復(fù)。
使用高效的二進(jìn)制數(shù)據(jù)存儲(chǔ),包括大型對象(如視頻等)。
自動(dòng)處理碎片,以支持云計(jì)算層次的擴(kuò)展性。
支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#, NODE等多種語言。
文件存儲(chǔ)格式為BSON(一種JSON的擴(kuò)展)。
可通過網(wǎng)絡(luò)訪問。
Mongoose
Node.js 的MongoDB ORM
uni-app
uni-app
是一個(gè)使用 Vue.js 開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應(yīng)式)、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)、快應(yīng)用等多個(gè)平臺。
DCloud
公司擁有600萬開發(fā)者用戶,幾十萬應(yīng)用案例、12億手機(jī)端月活用戶,數(shù)千款uni-app插件、70+微信/qq群。阿里小程序工具官方內(nèi)置uni-app(詳見),騰訊課堂官方為uni-app錄制培訓(xùn)課程(詳見),開發(fā)者可以放心選擇。
uni-app
在手,做啥都不愁。即使不跨端,uni-app
也是更好的小程序開發(fā)框架(詳見)、更好的App跨平臺框架、更方便的H5開發(fā)框架。不管領(lǐng)導(dǎo)安排什么樣的項(xiàng)目,你都可以快速交付,不需要轉(zhuǎn)換開發(fā)思維、不需要更改開發(fā)習(xí)慣。
tree new bee
環(huán)境需求
Nodejs 建議選擇 LTS 版本,最低要求 8.x
MongoDB 建議使用4.2版本
Redis 最新版本
安裝及配置
nodejs 的安裝請查看對應(yīng)的官方文檔
Egg 安裝
$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i
```
```JavaScript
$ npm run dev
$ open http://localhost:7001
MongoDB
提供linux RedHat(CentOS)安裝示例:
CentOS 去掉sudo
創(chuàng)建 /etc/yum.repos.d/mongodb-org-4.2.repo
文件內(nèi)容為:
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
安裝基礎(chǔ)
sudo yum install -y mongodb-org
安裝控制
sudo yum install -y mongodb-org-4.2.10 mongodb-org-server-4.2.10 mongodb-org-shell-4.2.10 mongodb-org-mongos-4.2.10 mongodb-org-tools-4.2.10
啟動(dòng)
sudo systemctl start mongod
安裝項(xiàng)目所需插件
1.egg-jwt 標(biāo)準(zhǔn)TOKEN生成校驗(yàn)
2.egg-mongoose MongoDB Nodejs ORM
3.egg-cors插件 跨域插件
4.egg-validate 數(shù)據(jù)校驗(yàn)插件
4.lodash JS函數(shù)庫
5.momentjs JS時(shí)間處理函數(shù)庫
6.request http處理包(貌似已棄用)
7.request-promise-native request promise化包(也可用nodejs自帶)
8.stream-to-array,stream-wormhole egg上傳內(nèi)存銷毀相關(guān)包
附package.json
"devDependencies": {
"autod": "^3.0.1",
"autod-egg": "^1.1.0",
"await-stream-ready": "^1.0.1",
"egg-bin": "^4.11.0",
"egg-ci": "^1.11.0",
"egg-cors": "^2.2.3",
"egg-jwt": "^3.1.7",
"egg-mock": "^3.21.0",
"egg-mongoose": "^3.3.0",
"egg-validate": "^2.0.2",
"eslint": "^5.13.0",
"eslint-config-egg": "^7.1.0",
"lodash": "^4.17.20",
"moment": "^2.28.0",
"request": "^2.88.2",
"request-promise-native": "^1.0.9",
"stream-to-array": "^2.3.0",
"stream-wormhole": "^1.1.0"
},
egg 插件配置文件 /config/plugin.js
'use strict';
/** @type Egg.EggPlugin */
exports.validate = {
enable: true,
package: 'egg-validate',
};
exports.mongoose = {
enable: true,
package: 'egg-mongoose',
};
exports.jwt = {
enable: true,
package: "egg-jwt"
};
exports.cors = {
enable: true,
package: 'egg-cors',
};
exports.redis = {
enable: true,
package: 'egg-redis',
};
egg 配置文件 /config/
/* eslint valid-jsdoc: "off" */
'use strict';
/**
* @param {Egg.EggAppInfo} appInfo app info
*/
module.exports = appInfo => {
/**
* built-in config
* @type {Egg.EggAppConfig}
**/
const config = exports = {};
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_1600096669632_8743';
config.middleware = ['fm', 'errorHandler', 'responseFormatter', 'jwtErrorHandler'];
// csrf 設(shè)置
config.security = {
csrf: {
enable: false,
ignoreJSON: true
},
domainWhiteList: ['http://localhost', 'http://127.0.0.1', '*']
};
// 跨域
config.cors = {
origin: '*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
credentials: true,
};
// 小程序配置
config.wxmpCf = {
appid: '您的小程序APPID',
secret: '您的小程序密鑰'
};
// 項(xiàng)目可能回連接多個(gè)/多種數(shù)據(jù)庫 這里我們默認(rèn)只使用mp的MongoDB數(shù)據(jù)庫
config.mongoose = {
clients: {
basic: {
url: 'mongodb://127.0.0.1:27017/您的數(shù)據(jù)庫名稱',
options: {},
},
mp: {
url: 'mongodb://127.0.0.1:27017/您的數(shù)據(jù)庫名稱2',
options: {},
}
},
};
// 代理獲取真實(shí)IP
config.proxy = true;
// 地圖接口設(shè)置
config.wmap = {
amap: { key: '高德地圖key' },
txmap: { key: '騰訊地圖key' }
};
// add your user config here
const userConfig = {
// myAppName: 'egg',
};
return {
...config,
...userConfig,
};
};
項(xiàng)目目錄結(jié)構(gòu)
- app 項(xiàng)目主目錄
- controller 控制目錄
- extend 擴(kuò)展
- libs 第三方代碼
- middlewear 中間件
- model 數(shù)據(jù)庫模型
- public 靜態(tài)文件
- router 路由(路由太多的情況使用)
- rules 數(shù)據(jù)校驗(yàn)文件
- schedule 定時(shí)任務(wù)
- service 服務(wù)
- view 頁面模板
router.js 路由文件
- config
- config.default.js 項(xiàng)目配置文件
- plugin egg插件
app.js
agent.js
文章轉(zhuǎn)載自:語言中文網(wǎng)
相關(guān)案例查看更多
相關(guān)閱讀
- 搜索引擎排名
- 楚雄小程序開發(fā)
- 昆明小程序公司
- 服務(wù)器
- 小程序表單
- 昆明網(wǎng)站設(shè)計(jì)
- 關(guān)鍵詞快速排名
- 網(wǎng)站建設(shè)首頁
- 云南做網(wǎng)站
- 楚雄網(wǎng)站建設(shè)公司
- 小程序被騙退款成功
- 網(wǎng)站建設(shè)服務(wù)
- 云南網(wǎng)站建設(shè)優(yōu)化
- web開發(fā)
- 網(wǎng)站上首頁
- 小程序用戶登錄
- 云南網(wǎng)站建設(shè)公司排名
- 云南網(wǎng)絡(luò)公司
- 海南小程序制作公司
- 軟件定制公司
- 日歷組件
- 云南etc小程序
- 高端網(wǎng)站建設(shè)公司
- asp網(wǎng)站
- 排名
- 小程序設(shè)計(jì)
- 小程序定制開發(fā)
- 昆明做網(wǎng)站建設(shè)的公司排名
- 小程序開發(fā)聯(lián)系方式
- 網(wǎng)站維護(hù)