node项目的基本机构
bin:项目的启动文件
// 引入模块依赖
var app = require('../app');
var debug = require('debug')('myapp:server');
var http = require('http');
// 从环境中获取端口并保存在express中
var port = normalizePort(process.env.PORT || '3000');
console.log(port)
app.set('port', port);
// 创建http服务器
var server = http.createServer(app);
// 在所有的网络接口上监听提供的端口
server.listen(port);//绑定端口
server.on('error', onError);
server.on('listening', onListening);
//端口规范化===数字,字符串或者false
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
//http服务器错误监听
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// 处理监听到的错误信息
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
//http服务器监听器
function onListening() {
var addr = server.address(); //指定server绑定的地址
console.log("addr:"+addr)
var bind = typeof addr === 'string' //捆绑地址 ===>地址存在? 使用地址 地址不存 使用段
? 'pipe ' + addr
: 'port ' + addr.port;
console.log("bind:"+bind)
debug('Listening on ' + bind);
}
node_modules:项目的依赖库
里面就是一些node服务所需的一些依赖包
public:项目的静态文件(css,js,img)
就是一些图片或者音频文件,还有一些js插件
routes:项目的路由
里面是一些路由,也就是自己封装的一些接口,响应前端的一些请求
ps:这里我是在每个js对应一个接口,其实应该是可以index文件写一个总路由.
views:视图目录文件(相当有mvc里的v)
其实就是html文件 模板引擎
app.js:项目的入口和程序启动文件
//引入模块依赖
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// 设置视图引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// 加载环境变量
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// // 加载路由
// app.use('/', indexRouter);
// app.use('/users', usersRouter);
// 加载路由===>>这里由于没有数据库 我是去在路由里去调用第三方接口 封装成自己的接口使用
// 百度语音合成
var synthesis=require('./routes/AiSpeechSynthesis.js');
app.use('/baiduAI', synthesis);
// 腾讯语音合成
var teSynthesis = require("./routes/txAi.js");
app.use('/txAi', teSynthesis);
// 腾讯翻译
var txTranslation = require("./routes/txTranslation.js");
app.use('/txTran', txTranslation);
// 加载错误处理
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
// 对外输出app
module.exports = app;
package.json:项目的基本信息(名称,版本等信息)
{
"name": "myapp",//程序名称
"version": "0.0.0",//版本号
"private": true,
"scripts": {
"start": "node ./bin/www" //npm start 或者 node ./bin/www 可以启动node程序
},
"dependencies": { //依赖包的版本
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"http-errors": "~1.6.2",
"jade": "~1.11.0",
"morgan": "~1.9.0"
}
}