计划写一个node全栈的学习过程,不定期更新,因为不想给自己的定位只是前端开发,想多了解后端的学习。笔记最初是记在有道云笔记的,现在分享出来,如有问题可以请各路大神指点。
首先需要一个服务器。
使用远程登录工具(如x-shell或secure)登录终端:
ssh username@ip
输入对应的密码
参考链接
因为我们使用的是ubuntu 16.04,采用先安装,后升级的方式。
首先安装node和npm:
apt install nodejs-legacy
apt all npm
这样得到的node 和 npm 的版本比较低,
node -v
node4.2.6
npm -v
v3.2
然后安装node版本管理工具n,然后再升级(这里使用n,而非nvm,二者皆为node版本管理工具,可根据情况自行选择,但最好不同时安装)。npm安装的模块路径一般为/usr/local/lib/node_modules(可以使用npm root -g命令查看你的系统中全局的路径)
npm install -g n
n lates
安装完了,来看看node的版本
v4.2.6
还是之前的版本,安装了node的版本管理工具n指定node版本无效。去网上找了一些资料,大概是因为node的安装目录和n默认的目录不一致,通过N_PREFIX变量来修改 n 的默认node安装路径。
具体可参考链接.
首先,查看node当前安装路径:
which node
/usr/local/bin/node
接下来,编辑环境变量。(我并未使用上述参考链接中的方式编辑,因为目前我认为我需要全局所有的用户都修改到这个变量,设置环境变量以及方法的区别具体可参考链接,参考链接2)
sudo vi /etc/profile #sudo是必须的
然后在文件尾追加上面的node安装路径:
export N_PREFEX=/usr/local/bin/node
export PATH=$N_PREFIX/bin:$PATH
环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:
source /etc/profile
确认一下环境变量是否生效:
echo $N_PREFIX
/usr/local/bin/node
然后使用最新版本的node:
sudo n lts #sudo必须
最后,查看一下node和npm的版本
node -v
v8.9.1
npm -v
5.5.1
至此,成功通过设置N_PATH使用n管理了node版本
node后端代码位置:
/home/node/node-serve
node前端页面代码:
/home/node/node-web
在此附上一些linux设置快捷键的方法。
因为ubuntu vi编辑器默认缩进是8个字符,我希望改为4个字符,并且设置显示行数。
具体操作:在ubuntu下
vi /etc/vim/vimrc
然后在文件中加入
set tabstop=4
set nu
set autoindent
常用vi命令
需要express框架,假如全局安装(-g)无效后需要在使用目录再次安装,
查看express版本
express --version
发现并未安装node-express,根据提示安装
apt install node-express-generator
再次查看express版本,无错即安装成功
配置node环境变量,打开环境变量配置文件
vi /etc/profile
接下来
export NODE_HOME=/usr/local/bin/node
export PATH=$NODE_HOME/bin:$PATH
为使环境变量生效
source etc/profile
接下来是一个server.js
var express = require('express'); // express 框架
var app = express();
var path = require('path');
app.use(express.static(path.resolve(__dirname,'..') + '/node-web'));
//__dirname: 当前目录
// path.resolve(__dirname, '..') 相当于 cd ../,即打开上层目录
// 处理请求/index.htm
app.get('/index.htm', function(req, res) {
var new_path = path.resolve(__dirname,'..');
var pageSrc = new_path + '/node-web' + '/index.htm';//取出nodeWeb下的index.htm页面
res.sendFile(pageSrc);
})
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port
console.log('访问地址为 http: //%s:%s', host, port)
})
运行nodejs服务器:
node server.js