下载安装node -> vue-cli -> 配置路由 -> 引入elementUi -> 公共组件
一、引入elementUi 顺便一提axios使用说明 和axios在vue中使用
二、准备静态资源
三、封装.vue公共组件
四、封装.js公共组件
五、封装公共的js代码
六、封装全局的filter、directive等


一、引入elementUi

elementUI官网

1. 安装:npm i element-ui -S
2. 在 main.js 中引入:

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI);

二、准备静态资源

如下图在 public 文件夹下新增,在 public 下的 index.html 中引入

三、封装.vue公共组件

(这里以公共的 header 为例)

  1. 注册组件: 在 src 文件夹下的 components 文件夹下新增一个 header 文件夹,并在该文件夹下新增 index.vue。这个 index.vue 用来写公共组件的静态页面;
    建议给每个页面加上 name ,这样可以在vue的工具上可以查看到,方便调试。

  2. 引入: import引入资源,components注册,


4. 上面图中”管理系统"是定死的,若想每次显示不同,则用父子通讯 props 属性使用动态数据。

使用方法:

四、封装.js公共组件

  1. 准备工作: 在 components 文件夹中 新建一个 Js 文件夹 以及 index.js 文件(这里的 index.js 用来作为 js 组件的集合页),再新建一个你所需要的 js 文件夹并在该文件夹下新建 index.vue 文件,如 MessageBox.
  2. 书写样式: 在index.vue 中书写样式

    代码:
<template><div class="message-box"><h2>定位</h2><p>北京</p><div><div>取消</div><div>切换定位</div></div></div>
</template><script>
export default {name:"messageBox"
}
</script><style scoped lang="scss">.message-box{width: 200px;height: 140px;border: 1px solid #ccc;border-radius: 4px;background: #fff;box-shadow: 3px 3px 3px 3px #ccc;position: absolute;left: 50%;top: 50%;margin: -200px 0 0 -100px;z-index:1;h2{text-align: center;line-height: 48px;font-size: 18px;}p{text-align: center;line-height: 40px;}>div{display: flex;position: absolute;bottom:0;width: 100%;border-top:1px #ccc solid;div{flex:1;text-align: center;line-height: 30px;border-right: 1px #ccc solid;}div:last-child{border:0;}}}
</style>

查看效果: 现在任意一个页面中注册使用进行查看

效果:

3. js 代码,在 index.js 中完成

import Vue from "vue";
import MessageBox from "./MessageBox";export var messageBox = (function(){ //记住这个messageBox,后面将会调用var defaults = { //默认值title : "", //对应 index.vue 中的定位content : "", //对应 index.vue 中的北京cancel : "", //对应 index.vue 中的取消ok : "", //对应 index.vue 中的切换handleCancel : null, //对应 index.vue 中的取消方法 用null 或者 空函数handleOk : null //对应 index.vue 中的切换方法 用null 或者 空函数};var MyComponent = Vue.extend(MessageBox);return function(opts){ //配置参数(返回调用时的配置参数)for(var attr in opts){defaults[attr] = opts[attr]; //覆盖默认配置}var vm = new MyComponent({el : document.createElement("div"),//作为容器装 index.vue ,此div不会在页面中渲染出来data : {title : defaults.title,content : defaults.content,cancel : defaults.cancel,ok : defaults.ok},methods : {handleCancel(){// 判断defaults.handleCancel是否存在,若存在,则是defaults中的null// 若不存在,执行 && 后的defaults.handleCancel,要拿到组件中的vm对象,所以用到call//不用bind,用bind直接改变了bind指向defaults.handleCancel && defaults.handleCancel.call(this);document.body.removeChild( vm.$el ); //点击完后删掉弹框},handleOk(){defaults.handleOk && defaults.handleOk.call(this);document.body.removeChild( vm.$el ); //点击完后删掉弹框}}});document.body.appendChild( vm.$el );};
})();

记得修改 index.vue 中的字段,让它变成动态的

4. 使用

显示结果:

五、封装公共的js代码

方法一:

  1. 我在 pulic 文件夹下 新建了一个 js 文件夹,里面用来放公共的 js 代码。
  2. 写 js 代码,记得要 export dafult {} 导出,如果用到了 axios 等方法或其他插件,记得要 import 这些插件。例如:
import axios from 'axios';
import ElementUI from 'element-ui';function getProcess(typeCode){console.log(1)axios.get('/api/temp/getParams?typeCode='+typeCode).then(res => {    console.log(res)if( res.status == 200){      }})  .catch(err =>{this.$message.error('服务器响应失败');console.log(err);})
};export default {getProcess
}

注意:在这里不要用 this ,否则会报错

3. 在 main.js 中引入,并在原型的身上挂载

import commonJS from '../public/js'
Vue.prototype.commonJS = commonJS;
  1. 使用时,this.原型上挂载的名称.方法名。例如:
this.commonJS.getProcess("0001");

方法二:

  1. 在 public 下新建一个 js 文件夹, js 文件下新建一个 index.js 文件用来写公共的 js 代码。
  2. 例如封装一个弹框的 js 代码:
import {MessageBox} from 'element-ui';function handleConfirm(text = "确定执行此操作吗", type='warning'){// 这里 export后面不加 default,引用时:import {方法名} from js文件地址// export后加 default,引用时:import 方法名 from js文件地址// 通过export方式导出,在导入时要加{ },export default则不需要return MessageBox.confirm(text, '提示',{confirmButtonText: '确定',cancelButtonText: '取消',type: type})
}export {handleConfirm}
  1. 组件中使用
import {handleConfirm} from '../../../public/js'methods:{signout(){handleConfirm('确认退出登录吗?','warning').then(res => {this.$router.push('/login');}).catch(err =>{console.log('err',err)})}
}

六、封装全局的filter、directive等

在 components 文件夹下新建一个 myVue 文件夹,再在这个新建的文件夹下新建 index.js
1. 简单举例,在index.js 中写:

import Vue from 'vue';Vue.directive('color', (el,binding){console.log(el);el.style.coloe = binding.value || '#fff';
})

2. 在 main.js 中注册import '@/components/myVue';

3. 使用: 直接在需要的页面上使用即可。


上一篇:创建vue项目(一)搭建vue-cli、项目文件介绍、简单配置
下一篇:路由跳转…

创建vue项目(二)引入elementUi、axios、准备静态资源、封装组件(.vue,js代码等)相关推荐

  1. Vue项目搭建 + 引入ElementUI

    初始化单页系统 在学习Vue的过程中,官方网站都是给了非常详细的介绍,所以初始化大型单页应用,官网给的参考资料地址:https://cn.vuejs.org/v2/guide/installation ...

  2. 如何在Vue项目中引入ArcGIS JavaScript API​ 创建三维可视化地图(含vue项目创建教程)

    新手上路之在Vue项目中引入ArcGIS API​ 视频教程 B站搜索 X北辰北,感谢up主无私的教学~ B站地址:https://www.bilibili.com/video/BV18E411K7B ...

  3. 创建Vue项目 以及引入Iview

    创建Vue项目 以及引入Iview 官方文档 # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue i ...

  4. 【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)

    在SpringBoot+VUE项目中引入EasyExcel实现导入导出 一.引入EasyExcel 通过maven引入,坐标如下: <dependency><groupId>c ...

  5. 新建vue项目并引入element组件

    从新建vue项目到引入组件Element 以及Error when rendering component报错解决 一.新建项目 1.打开cmd,运行:vue init webpack Vue-Dem ...

  6. vue ajax highcharts,在vue项目中引入highcharts图表的方法(详解)

    npm进行highchars的导入,导入完成后就可以进行highchars的可视化组件开发了 npm install highcharts --save 1.components目录下新建一个char ...

  7. 在vue项目中同时使用element-ui和mint-ui,的时候,.babelrc配置文件怎么写

    我们安装vue组件库的时候,考虑到大小问题,需要根据需要仅引入部分组件 借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的. 但是在配置  .bab ...

  8. flask template中使用Vue,遇到引入element-ui无效问题,Unknown custom element did you register the component correc

    本人最近在将A项目中的一个flask template页面前后端代码,迁移至B项目的中. A项目 template页面中使用了Vue,使用了element-ui组件.B项目也是flask 框架,之前没 ...

  9. Vue项目里引入Muse-UI

    一.在电脑中装好了node和vue的环境 二.下载纯净的Vue项目 1.在指定文件夹中输入指令:vue init webpack (自定义的项目名称): 2.然后根据提示,一路回车. 注意:Use E ...

最新文章

  1. Vue 应用 Sass、Scss、Less 和 Stylus
  2. XML中CDATA及其字符实体的使用
  3. 201521123091 《Java程序设计》第4周学习总结
  4. 08 域控 架构主机 转移_论无服务器架构的特征
  5. win10 笔记本猎豹WiFi无法打开
  6. nacos enablediscoveryclient_Spring Cloud(五):注册中心nacos篇
  7. general protection fault怎么办_法院离婚调解书我想办补充协议怎么办?-免费法律咨询...
  8. SpringBoot整合Shiro实现权限控制,验证码
  9. 发现Tensorflow
  10. java三目表达式_史上最强《Java 开发手册》泰山版王者归来
  11. [BZOJ2118] 墨墨的等式(最短路)
  12. autocad html 插件,cad插件有哪些
  13. 2022网易校招易计划在线课程
  14. Android studio真机调试返回 Entry name ‘assets/ae/res.ck‘ collided
  15. 妈妈的手除了像写字板还像什么呢?
  16. 安全模式没有计算机图标不见了怎么办,win10杀毒图标不见了怎么办?win10安全中心图标没了的处理方法...
  17. C# DataGridView控件动态添加行与列
  18. abel 登陆不了_无法登录OWA/ECP
  19. js中的change事件
  20. 2020年应届毕业生自学两个月JAVA的历程

热门文章

  1. 问题 1049: [编程入门]结构体之时间设计
  2. shiro 认证思路
  3. 手势相关-解决手势冲突
  4. 约瑟夫问题(java实现)
  5. json数据格式了解
  6. APUE Chapter 1 - UNIX System Overview
  7. C# CheckedListBox控件的用法
  8. 我的学习开发环境,呵呵!
  9. android 仿qq it蓝豹,《IT蓝豹》listview实现各种版面设计功能
  10. linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...