00#前言
学习JavaScript,自然要用node js 搭一个后台来
顺便可以学习MVC思想
nodejs也仅是刚刚hello world的水平,能在服务器上展示一下自己的学习成果,以后再慢慢补充
确保Node版本正确
node -v,npm -v
目前我使用的是7.8.0 ,npm是4.2.0
基础
Node引入模块需要require语句,如
const Koa = require('koa');
依次在内置模块、全局模块和当前模块下查找
除了一些内置模块,我们可以自己写一些.js
结尾的文件,对外输出
module.exports = variable;
自己理解的网页请求过程
在服务器端部署好我们的代码,监听在一个端口,等待请求
const Koa = require('koa'); /引入koa const app = new Koa(); /创建实例(可以理解为从koa继承了方法过来?并且命名为app) const controller = require('./controller'); /引入 app.use(controller()); /使用controller模块 app.listen(8080); /监听在8080
浏览器发起一次请求,带上了自己的方法
在F12控制台可以看到
服务器收到请求
MVC中的C,controller开始判断请求方法(Method)和后面的url
比如GET /
POST /signin
假设我们直接输入了127.0.0.1:8080
那么就是 GET /
方法
我们早已写好的一个模块方法,就可以登场了
module.exports = { 'GET /': async (ctx, next) => { ctx.render('index.html'); } };
这个函数的意思是,如果开头是GET,并且url为/的请求
会去寻找并返回 index.html
首页去哪里找呢?
那就是MVC里的view啦,在项目中是views文件夹
当然,为什么app知道要去views文件夹找,也是我们事前写进来的
const templating = require('./templating'); app.use(templating('views', { noCache: !isProduction, watch: !isProduction }));
当然,templating又是引入的一个js模块,里面有函数去读取views文件夹里的所有文件,并且绑定了ctx的render方法
这样,找到了index.html,带上了自己的type,返回给浏览器
ctx.response.type = 'text/html';
更多细节暂且不提,流程先搞懂,MVC中的model我也还没有用到,以后再补充。
将项目用git上传至仓库
首先新建一个仓库,空白的就可以,一步步走下去,就可以把我们的项目一起上传至git仓库
echo "# xxxxxx" >> README.md git init git add . git commit -m "first commit" git remote add origin git@github.com:yang-xxxxxxx/xxxxx.git git push -u origin master
在服务器中用git clone命令把仓库拉下来
用ngnix简单部署
1.安装pm2管理进程
sudo npm install -g pm2
pm2,不是污染哈哈,英文应该是
process manager for Node.js applications
他会将我们的进程在后台自动运行
2.开始在后台运行我们的项目
pm2 start app.js
3.设置开机自动运行
pm2 startup systemd
有可能会出现一些提示,让我们用sudo 命令
sudo su -c "env PATH=$PATH:/usr/bin pm2 startup systemd -u sammy --hp /home/sammy"
替换掉其中的sammy等个人名称
4.检查一下情况~
pm2 show app pm2 list systemctl status pm2
5.如果之后有更新,记得用pm2重启app
pm2 restart app_name_or_id
6.安装ngnix并配置
sudo apt-get install nginx
然后
sudo nano /etc/nginx/sites-available/default
也可以用 vim ,vi 等等命令~
删除全部文件,然后替换
server { listen 80; server_name example.com(替换掉); location / { proxy_pass http://localhost:8080(端口对应好); proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
7.检查一下是否有语法错误
sudo nginx -t
8.没有就启动吧!
sudo systemctl restart nginx
可能有防火墙,所以多加一条允许Nginx通过Firewall
sudo ufw allow 'Nginx Full'
成功!
具体koa的代码,大家可以看了廖雪峰老师的教程
百度关于部署这一步的教程不是很多,不够清晰
还是推荐谷歌,等我学好js,再来补充更多内容。
网友评论