Термин [большой интерфейс] стал популярным в «разработчиках» несколько лет назад, так какие же технологии включает в себя большой интерфейс? Традиционный FE, Native (Hybrid), Node, графические технологии, VR... Сегодня мы сосредоточимся на простом — Nodejs (переадресация запросов).
нужно
явно использоватьNode
То, что вы делаете, важно.
- Чтение соответствующего API из фона
- Обработайте прочитанные данные и отправьте их на внешний интерфейс (себе)
Очевидно, что это может быть полностью отброшеноJSP
языке, и это делается самим интерфейсом.
развивать
Засучите рукава, когда закончите, давайте сделаем это~~~~демо в блоге(уже с открытым исходным кодом)» в качестве примера введитеExpress
Рамка.
справочное агентство
.
├── app.js //入口文件
├── config //配置文件
├── controllers //控制器
├── logs //日志
├── models //模型
├── node_modules //依赖
├── package.json
├── public //静态资源
├── routes //路由
├── services //服务
├── utils //工具方法
├── views //模版
│ └── index.html
└── yarn.lock
С точки зрения организации каталога это относительно просто, что ж, давайте подробно представим основные функции.
Создать файл записи
Войдите в каталог проекта и создайте новый файлapp.js
, введите следующее:
var express = require('express')
var http = require('http')
var path = require('path')
var ejs = require('ejs')
var router = require('./routes/index')
var app = express();
router(app); //拆分路由
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public'))); //静态文件服务位置
app.engine('.html', ejs.__express);//使用.html做为后缀
app.set('view engine', 'html'); //使用ejs为模版引擎
http.createServer(app).listen(app.get('port'), function () {
console.log('Express server listening on port http://localhost:' + app.get('port'));
});
раздельная маршрутизация
создать новый файл/router.js
:
var index = require('./../controllers/index')
module.exports = (app) => {
app.get('/', index.index);
app.get('/api/get', index.get);
}
В будущем добавляйте любые другие маршруты, просто изменяйтеrouter.js
Вот и все.
сплит модель
Модельmodel
Специализируйтесь на обработке данных, будь то база данных или запрос удаленногоapi
Ресурсы должны быть их вещью. Естественно, мы можем изолировать запрос, выполнив следующие действия:
Новые папки и файлы/models/index.js
, вырежьте и вставьте код ниже:
var myFetch = require('./../utils/fetch')
var config = require('./../config/config')
var errCode = require('./../config/errCode')
var Index = {
//get
get: function (req, callback) {
//这里使用了知乎日报API
myFetch('https://news-at.zhihu.com/api/4/news/before/' + req.t, {}, function (err, data) {
if (!err) {
callback(null, data)
} else {
callback(null, errCode.SERVER_ERR)
}
})
}
}
module.exports = Index
сплит-контроллер
Контроллер отвечает за запрос данных из модели и отправку данных во внешний интерфейс, а также является диспетчером внешнего и внутреннего интерфейса. здесь,app.get
Анонимная функция в методе заключается в том, что мы извлекаем их отдельно и помещаем в/controllers/index.js
, и поместите запросApi
Код модели заменяется следующим кодом:
var Indexs = require('./../models/index')
var Index = {
//get '/'
index: function (req, res, next) {
res.render('index', { title: 'Express' });
},
//api/get
get: function (req, res) {
Indexs.get(req.query, function (err, data) {
console.log(req.query, err, data)
if (err) {
res.json({ status: 500, msg: err })
} else {
res.json(data)
}
})
}
}
module.exports = Index
Описание: По соглашению имя контроллера обычно является множественным числом имени (существительного) соответствующей модели.
После такой модульности мы легко реализовали простую структуру MVC, и ее удобство использования и расширяемость были значительно улучшены. Мы уже можем быстро добавить больше функциональности.
Суммировать
Код, задействованный в этой статье, по-прежнему очень прост, а более продвинутые функции нужно закидывать самостоятельно.
Весь код для этой статьи взят из моего BOLG, добро пожаловать ЗВЕЗДА ЗВЕЗДА ЗВЕЗДА.Портал>>