都说Vue2简单上手容易,的确,看了官方文档确实觉得上手很快,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前用jq随便拿全局变量和修改dom的锤子不能用了,vue只用关心数据本身,不用再频繁繁琐的操作dom,注册事件、监听事件、取消事件。。。。(确实很烦)。vue的官方文档还是不错的,由浅到深,如果不使用构建工具确实用的很爽,但是这在实际项目应用中是不可能的,当用vue-cli构建一个工程的时候,发现官方文档还是不够用,需要熟练掌握es6,而vue的全家桶(vue-cli,vue-router,vue-resource,vuex)还是都要上的。

vue.js有著名的全家桶系列,包含了vue-router,vuex, vue-resource,再加上构建工具vue-cli,就是一个完整的vue项目的核心构成。

vue-cli这个构建工具大大降低了webpack的使用难度,支持热更新,有webpack-dev-server的支持,相当于启动了一个请求服务器,给你搭建了一个测试环境,只关注开发就OK。

1.安装vue-cli

① 使用npm(需要安装node环境)全局安装webpack,打开命令行工具输入:npm install webpack -g或者(npm install -g webpack),安装完成之后输入 webpack -v,如下图,如果出现相应的版本号,则说明安装成功。

注意:webpack 4.X 开始,需要安装 webpack-cli 依赖 ,所以使用这条命令  npm install webpack webpack-cli -g

② 全局安装vue-cli,在cmd中输入命令:

  1. npm install --global vue-cli

(我已经安装过,为了更直观我在电脑上重新演示下)

 

安装成功:

 

安装完成之后输入 vue -V(注意这里是大写的“V”),如下图,如果出现相应的版本号,则说明安装成功。

打开C:\Users\Andminster\AppData\Roaming\npm目录下可以看到:


打开node_modules也可以看到:

2.用vue-cli来构建项目

① 我首先在D盘新建一个文件夹(dxl_vue)作为项目存放地,然后使用命令行cd进入到项目目录输入:

vue init webpack baoge

baoge是自定义的项目名称,命令执行之后,会在当前目录生成一个以该名称命名的项目文件夹。

 

输入命令后,会跳出几个选项让你回答:

  • Project name (baoge): -----项目名称,直接回车,按照括号中默认名字(注意这里的名字不能有大写字母,如果有会报错Sorry, name can no longer contain capital letters),阮一峰老师博客为什么文件名要小写 ,可以参考一下。
  • Project description (A Vue.js project): ----项目描述,也可直接点击回车,使用默认名字
  • Author (): ----作者,输入你的大名
    接下来会让用户选择:
  • Runtime + Compiler: recommended for most users 运行加编译,既然已经说了推荐,就选它了
    Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specificHTML) are ONLY allowed in .vue files - render functions are required elsewhere 仅运行时,已经有推荐了就选择第一个了
  • Install vue-router? (Y/n) 是否安装vue-router,这是官方的路由,大多数情况下都使用,这里就输入“y”后回车即可。
  • Use ESLint to lint your code? (Y/n) 是否使用ESLint管理代码,ESLint是个代码风格管理工具,是用来统一代码风格的,一般项目中都会使用。
    接下来也是选择题Pick an ESLint preset (Use arrow keys) 选择一个ESLint预设,编写vue项目时的代码风格,直接y回车
  • Setup unit tests with Karma + Mocha? (Y/n) 是否安装单元测试,我选择安装y回车
  • Setup e2e tests with Nightwatch(Y/n)? 是否安装e2e测试 ,我选择安装y回车

回答完毕后上图就开始构建项目了。

② 配置完成后,可以看到目录下多出了一个项目文件夹baoge,然后cd进入这个文件夹:
安装依赖:

npm install

 ( 如果安装速度太慢。可以安装淘宝镜像,打开命令行工具,输入:
npm install -g cnpm --registry=https://registry.npm.taobao.org
 然后使用cnpm来安装 )

npm install :安装所有的模块,如果是安装具体的哪个个模块,在install 后面输入模块的名字即可。而只输入install就会按照项目的根目录下的package.json文件中依赖的模块安装(这个文件里面是不允许有任何注释的),每个使用npm管理的项目都有这个文件,是npm操作的入口文件。因为是初始项目,还没有任何模块,所以我用npm install 安装所有的模块。安装完成后,目录中会多出来一个node_modules文件夹,这里放的就是所有依赖的模块。

然后现在,baoge文件夹里的目录是这样的:


解释下每个文件夹代表的意思(仔细看一下这张图):

image.png

3.启动项目

npm run dev

如果浏览器打开之后,没有加载出页面,有可能是本地的 8080 端口被占用,需要修改一下配置文件 config里的index.js

还有,如果本地调试项目时,建议将build 里的assetsPublicPath的路径前缀修改为 ' ./ '(开始是 ' / '),因为打包之后,外部引入 js 和 css 文件时,如果路径以 ' / ' 开头,在本地是无法找到对应文件的(服务器上没问题)。所以如果需要在本地打开打包后的文件,就得修改文件路径。
我的端口没有被占用,直接成功(服务启动成功后浏览器会默认打开一个“欢迎页面”):


注意:在进行vue页面调试时,一定要去谷歌商店下载一个vue-tool扩展程序。

 

4.vue-cli的webpack配置分析

  • package.json可以看到开发和生产环境的入口。

  • 可以看到dev中的设置,build/webpack.dev.conf.js,该文件是开发环境中webpack的配置入口。
  • 在webpack.dev.conf.js中出现webpack.base.conf.js,这个文件是开发环境和生产环境,甚至测试环境,这些环境的公共webpack配置。可以说,这个文件相当重要。

5.打包上线

注意,自己的项目文件都需要放到 src 文件夹下。
在项目开发完成之后,可以输入 npm run build 来进行打包工作。

npm run build

另:

  1. 1.npm 开启了npm run dev以后怎么退出或关闭?

  2. ctrl+c

  3. 2.--save-dev

  4. 自动把模块和版本号添加到模块配置文件package.json中的依赖里devdependencies部分

  5. 3. --save-dev 与 --save 的区别

  6. --save 安装包信息将加入到dependencies(生产阶段的依赖)

  7. --save-dev 安装包信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用它

  8.  

打包完成后,会生成 dist 文件夹,如果已经修改了文件路径,可以直接打开本地文件查看。
项目上线时,只需要将 dist 文件夹放到服务器就行了。

 

 

1:App.vue

 
  1. <template>

  2. <div id="app">

  3. <!--<img src="./assets/logo.png">-->

  4. <!--<h1>asdfasd </h1> 主页面-->

  5. <div style="height:500px;width: 500px;background:red;"></div>

  6. <router-view/>

  7. </div>

  8. </template>

  9.  
  10. <script>

  11. export default {

  12. name: 'App'

  13. }

  14. // name 起名字.在这没用name: 'app' 相当于一个全局 ID;

  15. // 可以不写;

  16. // 写了可以提供更好的调试信息(官方文档有)https://cn.vuejs.org/v2/api/#...。

  17. // https://cn.vuejs.org/v2/api/#...

  18. </script>

  19.  
  20. <style>

  21. #app {

  22. font-family: 'Avenir', Helvetica, Arial, sans-serif;

  23. -webkit-font-smoothing: antialiased;

  24. -moz-osx-font-smoothing: grayscale;

  25. text-align: center;

  26. color: #2c3e50;

  27. margin-top: 60px;

  28. }

  29. </style>

2:mian.js

 
  1. // The Vue build version to load with the `import` command

  2. // (runtime-only or standalone) has been set in webpack.base.conf with an alias.

  3. import Vue from 'vue'

  4. // 是自己配置好的.找到config 下面的vue。

  5.  
  6. import App from './App'

  7. // .同一个文件下面的App.就是App.vue

  8. import router from './router/'

  9. // .同一个文件下面的router 下面的index.js

  10. // (完整的写法)import router from './router/index.js'

  11. Vue.config.productionTip = false

  12.  
  13. /* eslint-disable no-new */

  14. new Vue({

  15. el: '#app',

  16. // 在index.html挂载

  17. router,

  18. components: { App },

  19. template: '<App/>'

  20. })

 

VUE如何加载main.js

 

在工程文件中使用main.js来加载App.vue文件的,但没有代码写出来加载main.js的,而index.html中只有一个自定义标签app,那么工程是如何加载到main.js文件的呢?

如果你是用vue.js官网提供的脚手架工具并沿用默认配置的话, 
你执行npm run dev的时候会出来页面, 
是因为你根目录下的package.json文件里script配置了

"dev": "node build/dev-server.js",

 

也就是其实执行的是dev-server.js这个文件,里面有定义

var webpackConfig = require('./webpack.dev.conf');

 

因为我们这个脚手架工具里是用webpack来打包项目文件的,依赖的webpack.dev.conf文件里又定义了

var baseWebpackConfig = require('./webpack.base.conf');

 

在这个依赖webpack.base.conf文件里面entry入口文件就配置了

app: './src/main.js'

 

所以当你运行npm run dev的时候就从main.js这个入口文件开始执行了

 

3:router index.js

 
  1. import Vue from 'vue'

  2. import Router from 'vue-router'

  3. import HelloWorld from '@/components/HelloWorld'

  4. // @根目录(src)components/helloworld文件

  5. Vue.use(Router)

  6. // usr new Router 和Vue联系起来。相当于在new Vue({

  7. // el:"#app",

  8. // router:router

  9. // )}

  10. export default new Router({

  11. routes: [

  12. {

  13. path: '/',

  14. name: 'HelloWorld',

  15. component: HelloWorld

  16. }

  17. ]

  18. })

 

4:index:html

 
  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4. <meta charset="utf-8">

  5. <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum=1.0,maximum-scale=1.0,user-scalable=no">

  6. <title>baoge</title>

  7. </head>

  8. <body>

  9. <div id="app"></div>

  10. <!-- built files will be auto injected -->

  11. </body>

  12. </html>

 

浅谈meta viewport设置移动端自适应

 

1、viewport

移动设备上的viewport是设备屏幕上用来显示网页的那部分区域,再具体一点就是浏览器上用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域大,也可能比浏览器的可视区域小。在默认情况下,移动设备上的viewport都是大于浏览器可视区域的,这是因为移动设备的分辨率相对于PC来说都比较小,所以为了能在移动设备上正常显示那些为PC浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,由设备本身决定),但后果是浏览器出现横向滚动条,因为浏览器可视区域的宽度比默认的viewport的宽度小。

 

2、3个viewport

(1)layout viewport

如果把移动设备上浏览器的可视区域设为viewport的话,某些网站会因为viewport太窄而显示错乱,所以这些浏览器就默认会把viewport设为一个较宽的值,比如980px,使得即使是那些为PC浏览器设计的网站也能在移动设备浏览器上正常显示。这个浏览器默认的viewport叫做 layout viewport。layout viewport的宽度可以通过 document.documentElement.clientWidth来获取。

(2)visual viewport

layout viewport的宽度是大于浏览器可视区域的宽度的,所以还需要一个viewport来代表浏览器可视区域的大小,这个viewport叫做 visual viewport。visual viewport的宽度可以通过 document.documentElement.innerWidth来获取。

(3)ideal viewport

ideal viewport是一个能完美适配移动设备的viewport。首先,不需要缩放和横向滚动条就能正常查看网站的所有内容;其次,显示的文字、图片大小合适,如14px的文字不会因为在一个高密度像素的屏幕里显示得太小而无法看清,无论是在何种密度屏幕,何种分辨率下,显示出来的大小都差不多。这个viewport叫做 ideal viewport。

ideal viewport并没有一个固定的尺寸,不同的设备有不同的ideal viewport。例如,所有的iphone的ideal viewport宽度都是320px,无论它的屏幕宽度是320还是640。

ideal viewport 的意义在于,无论在何种分辨率的屏幕下,针对ideal viewport 而设计的网站,不需要缩放和横向滚动条都可以完美地呈现给用户。

 

3、利用meta标签对viewport进行控制

移动设备默认的viewport是layout viewport,,但在进行移动设备网站的开发时,需要的是ideal viewport。要得到ideal viewport,需要用到meta标签。

head标签中加入:

 

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

 

该meta标签的作用是让当前viewport的宽度等于设备的宽度,同时不允许用户手动缩放。当然maximum-scale=1.0, user-scalable=0不是必需的,是否允许用户手动播放根据网站的需求来定,但把width设为width-device基本是必须的,这样能保证不会出现横向滚动条。

meta viewport 的6个属性:

 

width 设置layout viewport 的宽度,为一个正整数,或字符串"width-device"
initial-scale 设置页面的初始缩放值,为一个数字,可以带小数
minimum-scale 允许用户的最小缩放值,为一个数字,可以带小数
maximum-scale允许用户的最大缩放值,为一个数字,可以带小数
 height 设置layout viewport 的高度,这个属性并不重要,很少使用
user-scalable 是否允许用户进行缩放,值为"no"或"yes", no 代表不允许,yes代表允许

 

width能控制layout viewport的宽度,如果不指定该属性,layout viewport将默认为980px或1024px(也可能是其它值,由设备本身决定),如果把layout viewport的宽度设置为移动设备的宽度,那么layout viewport将成为ideal viewport。

其实,要把当前的viewport宽度设为ideal viewport的宽度,既可以设置width=device-width,也可以设置initial-scale=1,但有一个小缺陷,就是width=device-width会导致iphone、ipad横竖屏不分,initial-scale=1会导致IE横竖屏不分,都以竖屏的ideal viewport宽度为准。所以,最完美的写法两者都写上去, initial-scale=1 解决 iphone、ipad的缺陷,width=device-width解决IE的缺陷。

viewport设置移动端自适应的方法:

 

<meta name="viewport" content="width=device-width, initial-scale=1">

 

5:compontents HelloWorld.Vue

 
  1. <template>

  2. <div class="hello">

  3. <p>{{msg}}</p>

  4. <div style="height:500px;width: 500px;background:blue;"></div>

  5. </div>

  6. </template>

  7.  
  8. <script>

  9. export default {

  10. name: 'HelloWorld',

  11. data () {

  12. return {

  13. msg: 'Welcome to linan Airport for human'

  14. }

  15. }

  16. }

  17. </script>

  18.  
  19. <!-- Add "scoped" attribute to limit CSS to this component only -->

  20. <style scoped>

  21. h1, h2 {

  22. font-weight: normal;

  23. }

  24. ul {

  25. list-style-type: none;

  26. padding: 0;

  27. }

  28. li {

  29. display: inline-block;

  30. margin: 0 10px;

  31. }

  32. a {

  33. color: #42b983;

  34. }

  35. </style>

 

6:效果,

Logo

前往低代码交流专区

更多推荐