入坑VUE的一点心得

前言

本人专业做后台,有一定前端基础,最近想不通学了几天VUE,由于入坑过程有点小心酸,
想想还是记下来吧,一则是总结,说的不一定对,再则看看能不能给后入坑的人一点帮助吧

1.关键地址,具体作用后面会提到:

vue官网:https://cn.vuejs.org/
node官网:http://nodejs.cn/
vue-demo:https://github.com/PanJiaChen/vue-element-admin.git
饿了么框架官网:https://element.eleme.cn/#/zh-CN/component/quickstart

ps:最近某讯课堂VUE课程免费,可以看看。。

2.安装主要过程

1.装node.js,装node的目的在于用它的npm命令
2.装VUE,通过npm命令装Vue,但是由于npm下载资源是走国外,于是通过npm装个cnpm,这个下载走淘宝镜像,速度还行,npm能用的命令,cnpm基本也有
3.装webpack,这东西专门用来建包打包,初次安装会消耗很多时间…感觉是用不用另说,先给你下载个几百M的模块组件。。
4.开始构建包,要填写一系列的东西,敞开填,一路next,手速越快越好,因为后面都可以在一个叫package.json的文件里面修改,一个一个敲yes,真的很嫌麻烦。。
5.构建完毕之后,进入包目录,cmd命令 npm run dev,然后进入浏览器,地址:localhost:8080,传统套路,先来一个helloworld…

3.VUE的机制

1.vue的核心机制就是对一个单页面的html进行操作,抓住一个id=“app"的div元素,史上称其为全局唯一VUE对象,vue做的事情就是可劲的操作里面的东西。
2.任意HTML代码可以当成模版使用,一般模版越简单越好,这样够灵活,一个模版可以N多个地方使用
3.<div id="app">模版1,模版2,....模版N</div>,把每一个模版当成一个对象,具体操作dom的时候,本质其实就是Jquery里面的$(”#app").html(vue-html),替换内容,这里的vue-html就是模版之间的组合最后得出的html
4.数据双向绑定

4.依赖配置

根目录下有一个文件package.json,这个json总括了这个项目的基本信息,创建的时候填的东西都在了
和maven pom.xml感觉类似的东西

{
  "name": "vue-element-admin", //项目名
  "version": "4.2.1", //版本号
  "description": "备注:A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
  "author": "Pan <panfree23@gmail.com>", 作者
  "license": "MIT", 许可证
  "scripts": {  /**包含哪些脚本*/
    "dev": "vue-cli-service serve",/*dev启动脚本*/
    "build:prod": "vue-cli-service build",/**生产打包*/
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src",/**代码规范**/
    "test:unit": "jest --clearCache && vue-cli-service test:unit",
    "test:ci": "npm run lint && npm run test:unit",/**测试*/
    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",/**使用svg图片需要用这个处理*/
    "new": "plop"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*.{js,vue}": [
      "eslint --fix",
      "git add"
    ]
  },
  "keywords": [
    "vue",
    "admin",
    "dashboard",
    "element-ui",
    "boilerplate",
    "admin-template",
    "management-system"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/PanJiaChen/vue-element-admin.git"/**代码仓库地址*/
  },
  "bugs": {
    "url": "https://github.com/PanJiaChen/vue-element-admin/issues"/**有BUG往这提**/
  },
  "dependencies": {/**依赖的组件*/
    "axios": "0.18.1",
    "clipboard": "2.0.4",
    "codemirror": "5.45.0",
    "driver.js": "0.9.5",
    "dropzone": "5.5.1",
    "echarts": "4.2.1",
    "element-ui": "2.13.0",
    "file-saver": "2.0.1",
    "fuse.js": "3.4.4",
    "js-cookie": "2.2.0",
    "jsonlint": "1.6.3",
    "jszip": "3.2.1",
    "normalize.css": "7.0.0",
    "nprogress": "0.2.0",
    "path-to-regexp": "2.4.0",
    "screenfull": "4.2.0",
    "script-loader": "0.7.2",
    "showdown": "1.9.0",
    "sortablejs": "1.8.4",
    "tui-editor": "1.3.3",
    "vue": "2.6.10",
    "vue-count-to": "1.0.13",
    "vue-router": "3.0.2",
    "vue-splitpane": "1.0.4",
    "vuedraggable": "2.20.0",
    "vuex": "3.1.0",
    "xlsx": "0.14.1"
  },
  "devDependencies": {/**dev环境时使用的依赖,打包时不会被包含在里面**/
    "@babel/core": "7.0.0",
    "@babel/register": "7.0.0",
    "@vue/cli-plugin-babel": "3.5.3",
    "@vue/cli-plugin-eslint": "^3.9.1",
    "@vue/cli-plugin-unit-jest": "3.5.3",
    "@vue/cli-service": "3.5.3",
    "@vue/test-utils": "1.0.0-beta.29",
    "autoprefixer": "^9.5.1",
    "babel-core": "7.0.0-bridge.0",
    "babel-eslint": "10.0.1",
    "babel-jest": "23.6.0",
    "chalk": "2.4.2",
    "chokidar": "2.1.5",
    "connect": "3.6.6",
    "eslint": "5.15.3",
    "eslint-plugin-vue": "5.2.2",
    "html-webpack-plugin": "3.2.0",
    "husky": "1.3.1",
    "lint-staged": "8.1.5",
    "mockjs": "1.0.1-beta3",
    "node-sass": "^4.9.0",
    "plop": "2.3.0",
    "runjs": "^4.3.2",
    "sass-loader": "^7.1.0",
    "script-ext-html-webpack-plugin": "2.1.3",
    "serve-static": "^1.13.2",
    "svg-sprite-loader": "4.1.3",
    "svgo": "1.2.0",
    "vue-template-compiler": "2.6.10"
  },
  "engines": {/**软件版本要求**/
    "node": ">=8.9",
    "npm": ">= 3.0.0"
  },
  "browserslist": [/**浏览器版本要求**/
    "> 1%",
    "last 2 versions"
  ]
}

5.各种引用

1.各种花式引用…

/**第一种,引入的是node_modules文件夹下的*/
import 'normalize.css/normalize.css'
/**第二种,引入node_modules文件下一个组件的模版,
 这个ElementUI只是一个命名,你随意取
 因为这个模版定义的时候,使用的是export default,没有指定名字,用的时候再定义
*/
import ElementUI from 'element-ui';
/**第三种,相对路径引入*/
import './styles/element-variables.scss'
/**第四种,@等价于src*/
import '@/styles/index.scss' // global css
/**第五种,通过变量引入,使用方法require.context读取资源,放到req里面*/
const req = require.context('./svg', false, /\.svg$/);
/**
	第六种,指定名称引入,必须带{},因为定义的时候指定了它的名字validUsername
	export function validUsername(str) {
	  const valid_map = ['admin', 'editor']
	  return valid_map.indexOf(str.trim()) >= 0
	}

*/
import { validUsername } from '@/utils/validate'

6.启动顺序

以main.js为入口,进行各种组件的加载,一条链上的东西…

7.重要的组件

1.Vue #app元素本身
2.router 路由,控制请求跳转
3.axios 异步请求,类似ajax

每一种组件可以看成是一种js,不同功能…

9.总结

几天时间,踩坑无数…总算是能照着demo写出点东西了,要吐槽一下这个demo,功能太全,各模块一环扣一环,启动时扣着token鉴权,扣着过滤器,扣着UI样式加载,鉴权里面又扣着配置,套路太深。。
看着这中国人写的全英文注释,当你真的慢慢理解这个demo了之后,发现VUE确实是挺好用的,但是从纯后端入手VUE,还是有一定挑战的…

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值