VUE简介

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

NodeJS和NPM安装

Node.js 是一个基于Chrome V8 引擎的 JavaScript 运行环境,而NPM是随同NodeJS一起安装的一个包管理工具。NPM能解决NodeJS代码部署上的很多问题,常见的使用场景有以下三种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

由于我们在使用 VUE 进行前端项目开发需要依赖于 NodeJS 运行环境和使用 NPM 来帮助我们自动下载所需要的插件,所以我们需要先安装NodeJS和NPM。

Windows平台

访问NodeJS官网:https://nodejs.org/en/ ,下载对应Windows平台的安装包。

按照下图所示,傻瓜式点击下一步、下一步完成安装。

由于新版的NodeJS已经集成了npm,所以NPM也一并安装好了。在CMD命令行输入 node -v 和 npm -v 命令查看安装的NodeJS和NPM的版本,出现版本号就表示安装成功:

随NodeJS一起安装的NPM可能不是最新版本,最好用下面的命令,更新到最新版本。

npm install npm@latest -g

由于 NPM 是国外站点,下载插件速度会比较慢,推荐安装淘宝镜像并使用 CNPM 来安装所需插件。CNPM 与 NPM 命令语法基本一致,但安装速度会快很多。

npm install -g cnpm --registry=https://registry.npm.taobao.org

下面列举了几个常用的NPM命令:

npm install <package name> # 本地安装
npm install <package name>@version # 安装时指定版本
npm install -global <package name> --force # 全局安装
npm install -g <package name> -f # 全局安装
npm install git://github.com/package/xxx.git#x.x.x # 安装Github代码库
npm help # 查看 npm 命令简单帮助信息
npm -l # 查看 npm 各命令的详细用法
npm list # 以树型结构列出已安装的模块

Linux平台

官网地址:https://nodejs.org/en/download/current/

二进制安装

// 下载二进制包
wget https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.xz

// 解压文件
tar Jxvf node-v12.7.0-linux-x64.tar.xz

// 将解压文件移动到安装目录并改名
mv /usr/local/src/node-v12.7.0-linux-x64 /usr/local/node-v12.7.0

// 创建软链接
ln -s /usr/local/node-v12.7.0/bin/node /usr/local/bin/node
ln -s /usr/local/node-v12.7.0/bin/npm /usr/local/bin/npm

// 查看node版本
node -v
v12.7.0

// 查看npm版本
npm --version
6.10.0

源码包安装

// 安装gcc编译器
yum -y install gcc gcc-c++

// 下载源码包
wget https://nodejs.org/dist/v10.16.1/node-v10.16.1.tar.gz

// 解压文件
tar zxvf node-v10.16.1.tar.gz

// 将解压文件移动到安装目录
mv /usr/local/src/node-v10.16.1 /usr/local/node-v10.16.1

// 切换到安装目录进行编译安装
cd /usr/local/node-v10.16.1
./configure
make
make install

// 查看node版本
node -v
v10.16.1

注意: 在使用源码包安装NodeJS时,make编译出现了 error::make_unique is not a member of ‘std’ 错误,初步推断是由于当前安装的gcc编译器版本与编译NodeJS所需版本不匹配导致,我的解决办法是将 gcc 升级至 4.9 版本。

yum install centos-release-scl -y
yum install devtoolset-3-toolchain -y
scl enable devtoolset-3 bash

// 查看gcc编译器版本
gcc --version
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

VUE安装与使用

直接引用

我们可以在 <script> 标签中直接引入下载好的或网络上的vue.js。

    <!-- 引用 vue.js -->
    <script src="https://vuejs.org/js/vue.js"></script>

    <!-- 引用 vue.min.js -->
    <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>

NPM安装

切换到项目目录,执行如下NPM命令,将vue下载到项目目录。

npm install vue --save

然后,在 <script> 标签中引入下载好的 vue.js 。

    <!-- 引用 vue.js -->
    <script src="node_modules/vue/dist/vue.js"></script>

VUE-CLI

Vue 提供了一个官方的 CLI,为单页面应用 (SPA) 快速搭建繁杂的脚手架。它为现代前端工作流提供了 batteries-included 的构建设置。只需要几分钟的时间就可以运行起来并带有热重载、保存时 lint 校验,以及生产环境可用的构建版本。

Vue-cli 脚手架工具能够帮我们编写好项目基础代码,涵盖了目录结构、本地调试、打包部署、热加载、单元测试等方面。

Vue-cli项目地址:https://github.com/vuejs/vue-cli

Vue-cli帮助文档:https://cli.vuejs.org/zh/guide/

使用之前,你需要先安装 vue-cli 模块。

npm install -g vue-cli # 安装 vue-cli 模块
vue --version # 查看 vue-cli 版本
2.9.6
vue list # 查看官方提供的项目模板

  Available official templates:

  ★  browserify - A full-featured Browserify + vueify setup with hot-reload, linting & unit testing.
  ★  browserify-simple - A simple Browserify + vueify setup for quick prototyping.
  ★  pwa - PWA template for vue-cli based on the webpack template
  ★  simple - The simplest possible Vue setup in a single HTML file
  ★  webpack - A full-featured Webpack + vue-loader setup with hot reload, linting, testing & css extraction.
  ★  webpack-simple - A simple Webpack + vue-loader setup for quick prototyping.

切换到想要创建项目的目录,开始创建项目,我们先来创建一个 webpack-simple 示例项目 。

vue init webpack-simple my-project # 创建 webpack-simple 项目

创建好的 webpack-simple 项目的目录层级如下图所示。

切换到项目目录,启动项目。

项目启动后,访问  http://localhost:8080 。

VUE基础语法

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。

在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

下面是一个 Vue.js 的用法示例,代码如下。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>VUE 模板语法</title>
    <!-- 引用 vue.min.js -->
    <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
    <style type="text/css">
        .bg_green {
            background-color: green;
        }
    </style>
</head>

<body>
    <div id="app">
        <!-- Mustache 语法,绑定文本-->
        <div>Welcom to the world of <span>{{ rawText }}</span></div>
        <!-- v-text 语法,绑定文本-->
        <div>Welcom to the world of <span v-text='rawText'></span></div>
        <!-- v-html 语法,绑定 HTML -->
        <div>Welcom to the world of <span v-html='rawHtml'></span></div>
        <!-- v-bind 语法,绑定属性,对于布尔值属性,存在即值为 True-->
        <div>Welcom to the world of <span v-bind:class="myClass">{{ rawText }}</span></div>
        <!-- 计算属性,v-once 限制只绑定一次-->
        <div>反过来看: <span v-once>{{ reverMsg }}</span></div>
        <!-- v-on 语法,绑定事件-->
        <div><input type="button" v-on:click="reverseMsg" value="点击反转">:</input> <span>{{ reverMsg }}</span></div>
        <div>Are U ready ? <span v-bind:class="'bg_'+myColor">{{ isReady ? "Yes,Come on baby!" : "No,I'm scared!" }}</span></div>
        <div>Next year is <span>{{ curYear+1 }}</span></div>
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                rawText: 'Vue',
                rawHtml: '<font color="red">Vue</font>',
                myClass: 'bg_green',
                message: '赵兄托你帮我办点事',
                isReady: false,
                myColor: 'green',
                curYear: 2019
            },
            computed: {
                reverMsg: function () {
                    return this.message.split('').reverse().join('')
                }
            },
            methods: {
                reverseMsg: function (event) {
                    this.message = this.message.split('').reverse().join('')
                }
            }
        });
        // 监听属性
        vm.$watch('curYear', function (nval, oval) {
            console.log("Current year is " + nval)
        });
    </script>
</body>

</html>

在浏览器中访问页面,效果如下。

此外, Vue.js 还提供了如下事件修饰符和按键修饰符用来对事件的细节进行控制。

类型

名称

用途

事件修饰符

stop

阻止事件冒泡

prevent

阻止默认事件

capture

捕获事件

self

仅元素自身触发事件,子元素不触发事件

once

事件只触发一次

按键修饰符

up/down/left/right

↑↓←→

enter

回车

tab

Tab键

delete

删除或退格

esc

Esc键

space

空格

ctrl/alt/shift

Ctrl Alt Shift

meta

 

 下面是两个示例。

<!-- 提交表单时阻止默认事件,不刷新页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- Ctrl + C -->
<input @keyup.ctrl.67="clear">

Vue.js 还允许用户自定义过滤器,通常被用作一些常见的文本格式化。由"管道符"指示, 例如:

<div id="app">
  {{ message | capitalize }}
</div>
<script>
new Vue({
  el: '#app',
  data: {
    message: 'hello vue'
  },
  filters: {
    capitalize: function (value) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
})
</script>

 更多关于VUE语法的细节,请移步《Vue.js--60分钟快速入门》 或者参考官网帮助文档

Webpack项目配置

使用 vue-cli 创建好的 webpack 模板项目的目录结构如下图所示。

其中 build 目录中包含了webpack构建所需要的配置,通常情况下,我们不需要对这里面的配置做改动。项目中一些需要我们经常去改动的重要配置(例如,项目启动时的主机名和端口号,是否启用 Eslint 语法检查,静态资源的存放目录,打包文件的存放目录,等等)都被提取到了 config 目录中的 index.js 配置文件中。

这里我们只简单贴出 build.js 的代码,并在重要的地方添加了注释。

'use strict'
require('./check-versions')() // 引入 versions.js 校验 node npm 的版本

process.env.NODE_ENV = 'production' // 生产环境

const ora = require('ora') // 正在加载的动态展示插件
const rm = require('rimraf') // 删除文件的插件,相当于Unix系统中的 rm -rf
const path = require('path') // 路径插件
const chalk = require('chalk') // 彩色打印字符串插件
const webpack = require('webpack') // 打包插件
const config = require('../config') // 引入 ../config/index.js 项目配置
const webpackConfig = require('./webpack.prod.conf') // 引入 ./webpack.prod.conf 打包生产配置

const spinner = ora('building for production...')
spinner.start()

// 先删除之前的打包文件,默认目录 /dist
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
  if (err) throw err
  webpack(webpackConfig, (err, stats) => { // 重新打包
    spinner.stop()
    if (err) throw err
    process.stdout.write(stats.toString({
      colors: true,
      modules: false,
      children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
      chunks: false,
      chunkModules: false
    }) + '\n\n')

    if (stats.hasErrors()) {
      console.log(chalk.red('  Build failed with errors.\n'))
      process.exit(1)
    }

    console.log(chalk.cyan('  Build complete.\n'))
    console.log(chalk.yellow(
      '  Tip: built files are meant to be served over an HTTP server.\n' +
      '  Opening index.html over file:// won\'t work.\n'
    ))
  })
})

参考文章

https://www.runoob.com/vue2/vue-tutorial.html

https://cn.vuejs.org/v2/guide/

http://vuejs-templates.github.io/webpack/

https://cli.vuejs.org/zh/guide/ 

https://webpack.github.io/ 

Logo

前往低代码交流专区

更多推荐