从零开始node全栈学习笔记(一)

计划写一个node全栈的学习过程,不定期更新,因为不想给自己的定位只是前端开发,想多了解后端的学习。笔记最初是记在有道云笔记的,现在分享出来,如有问题可以请各路大神指点。

首先需要一个服务器。

使用远程登录工具(如x-shell或secure)登录终端:

ssh username@ip

输入对应的密码

安装node

参考链接

因为我们使用的是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命令

  • 跳到文件头:gg
  • 跳到文件尾:G
  • 复制一行:yy
  • 粘贴: p
  • 复制多行:
    将光标移动到要复制的文本开始的地方,按V进入可视模式。
    将光标移动到要复制的文本的结束的地方,按Y复制。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式。
    我移动光标到文本结束的地方,按p粘贴。

node后端

需要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

你可能感兴趣的:(前端,全栈,nodejs-实战)