vue-cli
官方提供的一个脚手架,用于快速生成一个 vue 的项目模板
vue-cli
官方提供的一个脚手架(预先定义好的目录结构及基础代码,咱们在创建 Maven 项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架;可以参考我以前写的 LeeSite 项目骨架生成工具),用于快速生成一个 vue 的项目模板
请自行前往 http://nodejs.cn/download 官网下载安装,此处不再赘述
cnpm
)npm install cnpm -g
### 或使用如下语句解决 npm 速度慢的问题
npm install --registry=https://registry.npm.taobao.org
cnpm install vue-cli -g
### 查看可以基于哪些模板创建 vue 应用程序,通常我们选择 webpack
vue list
### 这里的 myvue 是项目名称,可以根据自己的需求起名
vue init webpack myvue
Project name
:项目名称,默认 回车
即可Project description
:项目描述,默认 回车
即可Author
:项目作者,默认 回车
即可Install vue-router
:是否安装 vue-router
,选择 n
不安装(后期需要再手动添加)Use ESLint to lint your code
:是否使用 ESLint
做代码检查,选择 n
不安装(后期需要再手动添加)Set up unit tests
:单元测试相关,选择 n
不安装(后期需要再手动添加)Setup e2e tests with Nightwatch
:单元测试相关,选择 n
不安装(后期需要再手动添加)Should we run npm install for you after the project has been created
:创建完成后直接初始化,选择 n
,我们手动执行cd myvue
npm install
npm run dev
安装并运行成功后在浏览器输入:http://localhost:8080
npm install
安装的依赖文件module.exports
是 NodeJS 模块化语法src
目录是项目的源码目录,所有代码都会写在这里
项目的入口文件,我们知道所有的程序都会有一个入口
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
components: {
App },
template: ' '
})
import Vue from 'vue'
:ES6 写法,会被转换成 require("vue");
(require 是 NodeJS 提供的模块加载器)import App from './App'
:意思同上,但是指定了查找路径,./
为当前目录Vue.config.productionTip = false
:关闭浏览器控制台关于环境的相关提示el: '#app'
:查找 index.html 中 id 为 app 的元素template: ' '
:模板,会将 index.html 中
替换为
components: { App }
:引入组件,使用的是 import App from './App'
定义的 App 组件组件模板
template
:HTML 代码模板,会替换
中的内容import HelloWorld from './components/HelloWorld'
:引入 HelloWorld 组件,用于替换 template
中的
name: 'App'
:定义组件的名称components: { HelloWorld }
:定义子组件基本同上,不解释…
关于 的说明:CSS 样式仅在当前组件有效,声明了样式的作用域
感谢来自 Java微服务技术交流群1 的群友 [杨博] 帮助大家踩坑
MacOS 很多命令都需要加上 sudo 来执行,这是因为 Mac 本身的保护机制,需要取得管理员权限。那么问题来了,创建的文件无法操作,不能修改,简单来说:只读。要解决这个问题其实很简单,但是每次都需要手动来修改权限:
有件选中文件夹,记住,使整个工程的文件夹,先是简介,最下面,如图,全都修改成读与写,这只是第一步,第二步:
然后再去操作你的 Vue 文件就不会再报错了。
https://blog.csdn.net/codingfire/article/details/79295940
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
Webpack 是当下最热门的前端资源模块化管理和打包工具,它可以将许多松散耦合的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分离,等到实际需要时再异步加载。通过 loader 转换,任何形式的资源都可以当做模块,比如 CommonsJS、AMD、ES6、CSS、JSON、CoffeeScript、LESS 等;
伴随着移动互联网的大潮,当今越来越多的网站已经从网页模式进化到了 WebApp 模式。它们运行在现代浏览器里,使用 HTML5、CSS3、ES6 等新的技术来开发丰富的功能,网页已经不仅仅是完成浏览器的基本需求;WebApp 通常是一个 SPA (单页面应用),每一个视图通过异步的方式加载,这导致页面初始化和使用过程中会加载越来越多的 JS 代码,这给前端的开发流程和资源组织带来了巨大挑战。
前端开发和其他开发工作的主要区别,首先是前端基于多语言、多层次的编码和组织工作,其次前端产品的交付是基于浏览器的,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源,并且保证他们在浏览器端快速、优雅的加载和更新,就需要一个模块化系统,这个理想中的模块化系统是前端工程师多年来一直探索的难题。
Script 标签
<script src="module1.js">scirpt>
<script src="module2.js">scirpt>
<script src="module3.js">scirpt>
<script src="module4.js">scirpt>
这是最原始的 JavaScript 文件加载方式,如果把每一个文件看做是一个模块,那么他们的接口通常是暴露在全局作用域下,也就是定义在 window
对象中,不同模块的调用都是一个作用域。
这种原始的加载方式暴露了一些显而易见的弊端:
的书写顺序进行加载CommonsJS
服务器端的 NodeJS 遵循 CommonsJS 规范,该规范核心思想是允许模块通过 require
方法来同步加载所需依赖的其它模块,然后通过 exports
或 module.exports
来导出需要暴露的接口。
require("module");
require("../module.js");
export.doStuff = function() {
};
module.exports = someValue;
优点
缺点
实现
AMD
Asynchronous Module Definition 规范其实主要一个主要接口 define(id?, dependencies?, factory);
它要在声明模块的时候指定所有的依赖 dependencies
,并且还要当做形参传到 factory
中,对于依赖的模块提前执行。
define("module", ["dep1", "dep2"], function(d1, d2) {
return someExportedValue;
});
require(["module", "../file.js"], function(module, file) {
});
优点
缺点
实现
CMD
Commons Module Definition 规范和 AMD 很相似,尽量保持简单,并与 CommonsJS 和 NodeJS 的 Modules 规范保持了很大的兼容性。
define(function(require, exports, module) {
var $ = require("jquery");
var Spinning = require("./spinning");
exports.doSomething = ...;
module.exports = ...;
});
优点
缺点
实现
ES6 模块
EcmaScript6 标准增加了 JavaScript 语言层面的模块体系定义。 ES6 模块的设计思想,是尽量静态化,使编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonsJS 和 AMD 模块,都只能在运行时确定这些东西。
import "jquery";
export function doStuff() {
}
module "localModule" {
}
优点
缺点
实现
期望的模块系统
可以兼容多种模块风格,尽量可以利用已有的代码,不仅仅只是 JavaScript 模块化,还有 CSS、图片、字体等资源也需要模块化。
WebPack 是一款模块加载器兼打包工具,它能把各种资源,如 JS、JSX、ES6、SASS、LESS、图片等都作为模块来处理和使用。
npm install webpack -g
npm install webpack-cli -g
创建 webpack.config.js
配置文件
module.exports = {
entry: "",
output: {
path: "",
filename: ""
},
module: {
loaders: [
{
test: /\.js$/, loader: ""}
]
},
plugins: {
},
resolve: {
},
watch: true
}
直接运行 webpack
命令打包
使用 WebPack 打包项目非常简单,主要步骤如下:
modules
的目录,用于放置 JS 模块等资源文件hello.js
,用于编写 JS 模块相关代码main.js
的入口文件,用于打包时设置 entry
属性webpack.config.js
配置文件,使用 webpack
命令打包index.html
,导入 WebPack 打包后的 JS 文件创建一个名为 hello.js
的 JavaScript 模块文件,代码如下:
exports.sayHi = function () {
document.write("Hello WebPack");
};
创建一个名为 main.js
的 JavaScript 入口模块,代码如下:
var hello = require("./hello");
hello.sayHi();
创建名为 webpack.config.js
的配置文件,代码如下:
module.exports = {
entry: "./modules/main.js",
output: {
filename: "./js/bundle.js"
}
};
创建一个名为 index.html
,代码如下:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
head>
<body>
<script src="dist/js/bundle.js">script>
body>
html>
### 用于监听变化
webpack --watch
运行 HTML 文件,你会在浏览器看到:
Hello WebPack
原文地址:李卫民-Vue-cli