2. Nodejs+vue基础

Node.js是一个基于Chrome V8引擎的JavaScript运行环境.从开发者角度来说,原本运行在Web浏览器中的JavaScript代码,现在可以运行在任何装有Node.js的环境中。

简单一句话:让原本只会前端的人,也能使用javascripts来写后端服务了

Node.js分为两个不同的版本:LTS和Current。

注意:

LTS版本是长期支持的稳定版本,即该版本内容稳定。

Current版本是根据当前项目的开发进度实时更新的可发布版本,包含最新的性能优化和代码优化,但版本中会有一些Bug。

2.1. 1.安装Node.js

2.1.1. 1.1 windows中安装nodejs

1、首先我们上node.js官网(https://nodejs.org/zh-cn/),下载最新的长期版本,直接运行安装完成之后,我们就已经具备了node和npm的环境啦。

下载–点击安装—配置环境变量

C:\Users\18793>node -v
v14.15.0

C:\Users\18793>npm -v
6.14.12

npm配置(node_global和node_cache)

打开cmd
# 安装淘宝npm
$ npm install -g cnpm --registry=https://registry.npm.taobao.org

# vue-cli 安装依赖包
$ cnpm install --g vue-cli


# 执行
$ npm config set prefix "D:\nodejs\node_global"
$ npm config set cache "D:\nodejs\node_cache"

如果这种方法无法修改还可以:

在nodejs的安装目录中找到node_modules\npm\npmrc文件

修改如下即可

prefix = D:\nodejs\node_global
cache = D:\nodejs\node_cache

yarn安装及配置

npm install -g yarn

安装完后使用yarn -v可查看版本号

新建两个文件夹 yarn_global和yarn_cache

yarn config set global-folder "D:\nodejs\yarn_global"
yarn config set cache-folder "D:\nodejs\yarn_cache"

2.1.2. 1.2 Linux中安装nodejs

wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
tar -Jxf node-v10.16.3-linux-x64.tar.xz

[root@localhost app]# cd node-v10.16.3-linux-x64/bin/
[root@localhost bin]# ./node -v
v10.16.3

# 环境变量
echo "export PATH=$PATH:/app/node-v10.16.3-linux-x64/bin" >> /etc/profile.d/node.sh
source /etc/profile

# 或者软连接
ln /app/node-v10.16.3-linux-x64/bin/node /usr/local/bin/
ln /app/node-v10.16.3-linux-x64/bin/npm /usr/local/bin/

2.2. 2.第一个Node.js示例—Hello World

编写Hello World示例。

Hello World.js

const http = require('http')

http.createServer(function (request,response) {
    response.writeHead(200,{'Content-Type':'text/html'});
    response.end('<h1>Hello World</h1>');
}).listen(3000);

console.log("Server running at http://127.0.0.1:3000/")

这样就完成了第一个最简单的Node.js项目。

2.3. 3.Node.js后端框架Express

简单来说,Express框架本身是对Node.js中的HTTP模块进行的一层抽象,就是这层抽象使得开发者可以无须注意细节,直接上手进行页面和业务逻辑的开发。

Express的主要功能包括:

  • 设置中间件来响应HTTP请求;

  • 定义路由表执行不同的HTTP请求动作;

  • 通过向模板传递参数动态渲染HTML页面。

2.3.1. 3.1 Express的安装

(1)新建项目文件夹,并且通过命令提示行进入该文件夹

(2)使用npm命令初始化Node.js项目,命令如下:

npm init

(3)执行Express的安装命令如下:

npm install express

(4)安装成功后,package.json文件会自动添加Express为依赖项,更改后的内容如下:

{
  "name": "express2020",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  }
}

3.1.1 Express项目示例—Hello World

(1)新建一个入口文件app.js,完整的代码如下:

// 引入Express模块和实例化
const express = require('express')
const app = express()

// 设定根路由显示Hello World
app.get('/', (req, res) => res.send('Hello World!'))

// 监听3000端口为http服务
app.listen(3000, () => console.log(`Example app listening on port 3000!`))

(2)使用如下命令运行程序,然后在浏览器中输入http://127.0.0.1:3000,即可访问该页面

node app.js

2.4. 4.RESTful API规范

RESTful是目前最流行的API设计规范,其核心思想就是对客户端发起的请求进行5种划分,不同的操作对应5种不同的HTTP请求方法,这是以逻辑操作功能为基础进行划分的,而不是传统的API设计以路径方式进行划分。

  • GET:从服务器端取出资源(一项或多项)。

  • POST:在服务器端新建一个资源。

  • PUT:在服务器端更新资源(客户端提供改变后的完整资源)。

  • PATCH:在服务器端更新资源(客户端提供改变的属性)。

  • DELETE:从服务器端删除资源。

  • HEAD:获取资源的元数据。

  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

符合RESTful的API设计就是所有的API路由符合上述划分。也就是说,相同的请求路径,由于请求方式不同,可能获取的数据结果不同,或执行不同的数据操作。

注意:如300系列的重定向、400系列的客户端错误和500系列的服务器错误等。通过HTTP查看具体的状态码并且了解其含义,可以方便地定位问题所在。

2.5. 5.页面显示框架Vue.js

Vue.js被设计为自底向上逐层应用。Vue.js的核心库只关注视图层,方便与第三方库或既有项目整合,非常容易学习。Vue.js的官方主页为https://cn.vuejs.org/

Vue.js项目在GitHub上获得了近15万颗星的成绩。

注意:Vue.js不支持IE 8及以下版本,因为它使用了IE 8无法模拟的ECMAScript 5特性,但它支持所有兼容ECMAScript 5的浏览器。

2.5.1. 5.1 Vue.js的安装

安装Vue.js有三种方法:

1.本地文件
2.CND引入
3.npm install vue

(1)类似于Bootstrap或jQuery,直接通过HTML文件中的<script></script>标签引用。

对于制作原型或学习,你可以这样使用最新版本:

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

对于生产环境,我们推荐链接到一个明确的版本号和构建文件,以避免新版本造成的不可预期的破坏:

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>

如果你使用原生 ES Modules,这里也有一个兼容 ES Module 的构建文件:

<script type="module">
  import Vue from 'https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.esm.browser.js'
</script>

(2)npm安装方式。新建项目文件夹,使用npm init命令初始化项目,然后使用如下命令安装Vue.js,与Express的安装步骤一样。

npm install vue

package.json文件会自动添加Vue.js的依赖项,代码如下:

{
  "name": "vue202105-books",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2",
    "vue-template-compiler": "^2.6.11"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

2.5.2. 5.2 用Vue.js编写Hello World—CDN方式

<!DOCTYPE html>
<html>
<head>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>

<!-- 目的: 将数据渲染到页面上 -->
<div id="app">
    <!-- 将数据填充到HTML标签中, 插值表达式支持基本的计算操作 -->
    {{ text }}
</div>

<script>
    var vm = new Vue({
        // Vue实例选项
        /*
            el  作用:
                1. 指定/设置 当前Vue实例所管理的视图
                2. 值也可以为其他选择器,class或者DOM元素,/.,吗但发生作用的只有第一个
                3. 值也可以为DOM元素

                注意: 不能让el直接管理html或者body 报错! mount ->挂载
        */
        el: '#app',

        // 模拟ajax返回的数据
        data: {
            /*
                data作用:  指定/设置 当前vue实例所管理视图中要使用的数据

                1 . data的值可以是一个对象
                2 . data中的数据 可以通过Vue实例对象,属性名(vm.msg),去访问数据
                3 . 访问数据  可以通过vm.$data.msg访问数据

                特点:  响应式数据(当数据发生变化时,视图中用数据的位置会自动发生变化)
            */
            text: 'hello world!!!!!',
        },


    })
</script>

</body>
</html>

2.5.3. 5.3 用Vue.js编写Hello World—Webpack方式

Webpack暂时没使用,跳过,用的时候在学习一下

参考下面文献

注意:Webpack还存在很多不同的用法,读者可以参考官方文档https://webpack.js.org/。

2.6. 6. 其他页面显示框架

Vue.js的API参考了AngularJS、KnockoutJS、Ractive.js和Rivets.js,因此作为一个后来者,Vue.js是对上述框架的总结和优化,不仅如此,它还增加了很多新的特性,所以非常流行。

除了Vue.js框架之外,值得一提的还有React.js框架。

Vue.js框架的优点如下:

- 生态丰富,学习成本低;
- 简单易用;·官方库较多,程序开发风格统一且文档全面;
- 轻量、高效;·依赖其他开源模块较少,可以简单地实现功能重构。

Vue.js框架的缺点如下:

- 使用者和贡献者较为单一,GitHub中的使用者大部分是中文使用者;
- 非官方的小众库不一定支持Vue.js。

React.js的优点如下:

- 灵活和优秀的响应性;
- 虚拟DOM使性能得到极大提升;
- 丰富的JavaScript库,面对全世界的贡献者;
- 丰富、强大的扩展性;
- 有Facebook等专业开发人员的支持;
- 多平台的优势,并且React Native等技术已广泛使用。

React.js的缺点如下:

- 功能复杂,体积庞大;
- 学习难度比较高。

2.7. 7.JavaScript开发利器—WebStorm

JavaScript拥有大量的IDE,甚至一些并非专门为JavaScript准备的开发工具都支持它(如Eclipse、NetBeans等)。

还有一些常见的IDE,如VSCode或Notepad++也提供了大量的扩展和自定义选项来实现JavaScript专用IDE的效果。

JetBrains系列的WebStorm,官方网址为https://www.jetbrains.com/webstorm/,用户可以免费试用30天。

2.8. 8.小结

介绍了工程网站需要的两个关键技术:Node.js和Vue.js。

其中,Node.js分为两部分来介绍:纯Node.js和Node.js框架(Express)