导读 三大前端框架布局element-ui(1.布局) (1)el-row和el-col配合使用 elementui框架(elementui框架中文网) 这个el-row定义的就是

三大前端框架布局element-ui(1.布局)

(1)el-row和el-col配合使用

elementui框架(elementui框架中文网)elementui框架(elementui框架中文网)


这个el-row定义的就是一行,然后这行被分为24列,这24列被el-col分配,配置里面的:span属性就可以分配这一行空间了。

1.1:列与列之间的间距可以在el-row中绑定:gutter来设定,:gutter绑定的是px

1.2:列的偏移量:el-col中绑定::offset=""来设置,绑定的是栏数

1.3 :对齐方式(left,center,right)

设置el-row中的属性type,justify设置不同的对齐方式(start(左), center(中), end(右), space-between(列之间中间平均分配), space-around(整行平均列之间全部平均分配) )

补充:xs、sm、md、lg和xl,至此的不同屏幕大小下的响应式布局。

(1)会使用el-container,el-main,el-aside,el-header,el-footer来快速布局

el-main,el-aside(有width属性),el-header(height属性),el-footer(height属性)必须要在el-container里面

1.vue 项目搭建,基于element UI的pc端框架

vue list

vue init webpack 项目名称

npm install

npm run dev

npm i element-ui

importElementUIfrom'element-ui'

import'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)

Vue3+elemetPlus支持动态路由和菜单管理UI框架

内容较多请耐心阅读,你认真读完一定获益匪浅

这是一个基于vuecli+element-plus共同搭建的一个开源vue3动态路由和动态菜单开源框架,总体来说这个项目是非常优秀。你通过使用它直接实现动态路由和菜单管理功能,实现快速开发。支持二级菜单管理和嵌套路由管理。

"element-plus": "^1.0.2-beta.70",

"vue": "^3.0.0",

"vue-router": "^4.0.0-0"

1、unituicli3是一个基于vue3搭建的一个项目,它是 与时俱进 的, 极具时代性,紧跟vue3的脚步 。

2、项目仅仅集成了element-plus和vue-router两个必备的JavaScript库,除此之外没有再集成任何JavaScript库。这也就意味着你可以根据自己的项目需要去安装自己需要的JavaScript库, 避免因为项目集成库过多给你带来烦恼 。

3、强劲的组件管理器,我们为了帮助你实现可视化管理动态路由和菜单,我们内置了《组件管理》功能组件,使 路由和菜单管理可视化 。同时我们为了更好地实现项目管理,在vue2版本的基础上新增了可选json导出功能,让你可以快速实现json数据生成,生成用户权限路由和菜单。

4、美丽的视图框架,我们 内置了一个后台管理UI框架 ,你可以通过使用它实现admin项目的快速生成和搭建。当然你也可以自己搭建自己喜欢的UI框架结构。

5、 更少的干扰 。为了让项目更加纯净,将项目控制权更多的交给开发者,我们新建了unitui文件夹位于src文件夹下用于存放我们内置的部分,为了便于你项目的启动和理解你可以直接将ivews和components文件夹内容清空,重新搭建你的组件,因为这些目录下的文件这些并不重要。

Unituicli3因为《组件管理》而显得强大,因为这是 核心组件 ,将动态路由(添加、删除、修改)、嵌套路由和菜单管理(添加、删除、修改)变得可视化,而且支持json数据生成使前后端间交互变得可能,你只需要将生成的json储存在数据库便可实现权限编辑。

我们虽然尽力减少对开发者的影响,但是做出一些修改是不可避免的。

import { createApp } from 'vue'

import ElementPlus from 'element-plus';

import App from './App.vue'

import router from './router'

import '@/unitui/init_route.js'//这是为了实现防止刷新路由丢失

const app = createApp(App)

app.use(ElementPlus)

app.use(router).mount('#app')

// 注册全局组件

import Uicon from './unitui/sub/Uicon.vue'

你如果不是使用elementPlus作为你的UI你可以参考上面内容做出适当修改

这是一个全局注册的图标选择器,你可以在任意组件通过 使用图标选择器,它挂载在main.js文件中,你如不是使用element你需要做出修改,否则可能 影响图标选择的功能使用 。

实际效果

这是一个非常重要的内置组件,它主要用于模拟登录时的操作和信息生成,它会读取位于assets/json/文件夹下的两个json生成菜单和路由信息,json内容模拟后端返回的内容。

其中最重要的是路由的生成,你在登录后路由json信息返回后调用init_route方法,代码如下:

init_route(route_data) {

//依据后端返回的json数据生成路由

const init_route_data = []; //定义一个路由数组储存生成的路由信息

for (let index = 0; index < route_data.length; index++) {

//循环后端返回的json

//循环

if (route_data[index].children != undefined) {

//有children时生成路由数组方法

init_route_data[index] = {

path: route_data[index].path, //路由url

name: route_data[index].name, //路由名

component: () => import(`@/${}`),

// component: (resolve) => require([`@/views/${}`], resolve), //加载后端json描述的vue文件

meta: {

//路由一些附加信息

show_site: route_data[index].meta.show_site, //是否全屏显示

web_title: route_data[index].meta.web_title //网站标题

},

children: [] //嵌套路由

};

for (let i = 0; i < route_data[index].children.length; i++) {

init_route_data[index].children[i] = {

path: route_data[index].children[i].path, //路由url

name: route_data[index].children[i].name, //路由名

component: () => import(`@/${}`),

// component:(resolve) => require([`@/views/${}`], resolve), //加载后端json描述的vue文件

meta: {

//路由一些附加信息

show_site: route_data[index].children[i].meta.show_site, //是否全屏显示

web_title: route_data[index].children[i].meta.web_title //网站标题

}

};

}

} else {

//没有children时生成路由数组方法

init_route_data[index] = {

path: route_data[index].path, //路由url

name: route_data[index].name, //路由名

component: () => import(`@/${}`),

// component:(resolve) => require([`@/views/${}`], resolve), //加载后端json描述的vue文件

meta: {

show_site: route_data[index].meta.show_site, //是否全屏显示

web_title: route_data[index].meta.web_title //网站标题

}

};

// console.log(index);

}

}

// console.log(init_route_data); //打印生成初始化路由数组

for (let index = 0; index < route_data.length; index++) {

//由于addRoutes已经废弃,所以需要循环使用addRoute进行数组添加

this.$router.addRoute(init_route_data[index]); //循环添加数组

}

this.init_menu(); //执行菜单生成方法

},

其他三个你可以随意修改

在vue2动态路由项目之中,在app.vue文件mounted方法中调用路由生成方法,可以实现刷新路由防丢失,但是在vue3中采用同样方式,则会出现异常,原因是我们跳转发生在路由添加前,所以会出现刷新后页面没有内容,所以我们在unitui文件夹下新建init_route.js写下和login.vue文件中路由初始化相似的内容,然后再main.js中引入。

init_route.js内容:

import router from '@/router'

function init_route() {

//依据后端返回的json数据生成路由

if (sessionStorage.getItem("route_data") != null) {

const route_data = JSON.parse(sessionStorage.getItem("route_data"));

// console.log(route_data);

const init_route_data = []; //定义一个路由数组储存生成的路由信息

for (let index = 0; index < route_data.length; index++) {

//循环后端返回的json

//循环

if (route_data[index].children != undefined) {

//有children时生成路由数组方法

init_route_data[index] = {

path: route_data[index].path, //路由url

name: route_data[index].name, //路由名

component: () => import(`@/${}`),

// component: (resolve) => require([`@/views/${}`], resolve), //加载后端json描述的vue文件

meta: {

//路由一些附加信息

show_site: route_data[index].meta.show_site, //是否全屏显示

web_title: route_data[index].meta.web_title //网站标题

},

children: [] //嵌套路由

};

for (let i = 0; i < route_data[index].children.length; i++) {

init_route_data[index].children[i] = {

path: route_data[index].children[i].path, //路由url

name: route_data[index].children[i].name, //路由名

component: () =>

import(`@/${}`),

// component:(resolve) => require([`@/views/${}`], resolve), //加载后端json描述的vue文件

meta: {

//路由一些附加信息

show_site: route_data[index].children[i].meta.show_site, //是否全屏显示

web_title: route_data[index].children[i].meta.web_title //网站标题

}

};

}

} else {

//没有children时生成路由数组方法

init_route_data[index] = {

path: route_data[index].path, //路由url

name: route_data[index].name, //路由名

component: () => import(`@/${}`),

// component:(resolve) => require([`@/views/${}`], resolve), //加载后端json描述的vue文件

meta: {

show_site: route_data[index].meta.show_site, //是否全屏显示

web_title: route_data[index].meta.web_title //网站标题

}

};

// console.log(index);

}

}

// console.log(init_route_data); //打印生成初始化路由数组

for (let index = 0; index < route_data.length; index++) {

//由于addRoutes已经废弃,所以需要循环使用addRoute进行数组添加

router.addRoute(init_route_data[index]); //循环添加数组

}

// 这里放置刷新

// console.log('app');

// const index=window.location.href.lastIndexOf("#")

// const url=window.location.href.substring(index+1,window.location.href.length);

// this.$router.push(url)

}

}

init_route()

在main.js中引用:

import '@/unitui/init_route.js'//这是为了实现防止刷新路由丢失

此时便可完成刷新自动初始化

我们通过在app.vue文件中通过获取路由中meta. show_site的值(0全屏显示,1显示在视图内),然后使用 v-if控制不同router-view的显示来实现显示位置的控制。

App.vue源码:

1、如果你不喜欢我们的ui框架,你需要开发新的ui时,没有ui框架的支持《组件管理》功能可能不能正常显示(显示空白),你可以将unitui/ subadmin/ SubAdmin.vue文件中style部分改为:

#sub_admin_back {

width: 100%;

/* 非ui框架将height写为height: 100vh; */

height: 100vh;

background-size: cover;

position: relative;

background-color: #ffffff;

border-radius: 10px;

}

1、没能尽可能减少对框架的干扰,你仍然需要保持对main.js的适当修改。

Vue项目 UI框架介绍(第六天上)

1.什么是elementUI?

ElementUI是饿了么前端团队推出的一款基于Vue的桌面端UI框架

大白话: 和Bootstrap一样对原生的HTML标签进行了封装, 进行了美化, 让我们能够专注于业务逻辑而不是UI界面

2.elementUI使用

3.elementUI优化

默认情况下无论我们有没有使用到某个组件, 在打包的时候都会将elementUI中所有的组件打包到我们的项目中

这样就导致了我们的项目体积比较大, 用户访问比较慢

4.如何优化

为了解决这个问题, elementUI推出了按需导入, 按需打包. 也就是只会将我们用到的组件打包了我们的项目中

没有用到的组件不会被打包

1.什么是MintUI?

MintUI是饿了么前端团队推出的一款基于Vue的移动端U框架

大白话:和Bootstrap一样对原生的HTML标签进行了封装,让我们能够专注于业务逻辑而不是UI界面

2.mintUI使用

3.注意点: MintUI和ElementUI的第一个不同, 就是在MintUI中需要通过来告诉Vue我们需要使用

1.什么是Vant?

在使用MintUI的过程中发现有很多的坑,所以个人不推荐在移动端中选择MintUIXant是有赞前端开发团队又推出的一款 基于Vue的移动端UI框架

大白话:和Bootstrap一样对原生的HTML标签进行了封装,进行了美化,让我们能够专注于业务逻辑而不是UI界面

Vue.use只能use插件,不能use组件

那么如何将一个组件封装成一个插件呢?

1.Vue.use()做了什么事情?

Vue.use的作用是注册一个Vue插件(注册组件), Vue.use必须在new Vue之前使用

2.什么时候需要定义插件?

当某一个组件或者功能经常需要被使用到时, 我们就可以将这个组件或者功能定义成一个插件

例如: 网络加载指示器

3.如果自定义一个插件?

element-ui 初始化页面框架

(2). 在 main.js 里引入修改后的 主题样式, 并把引入默认的主题去掉, 如图所示

(3). 示例

1.安装

自动转换成rem单位, 结果如下图

Vue SSR 项目 Nuxt.js 框架之《如何引入第三方UI框架element-ui》

在项目开发中引入第三方 UI框架 再平常不过,那 nuxt 该如何引入呢?我们以 Elemeng-ui 为例,具体看下在 nuxt 中配置与使用的步骤是怎样的。

需在 plugins 文件夹里创建一个 element-ui.js 文件,内容如下:

在 nuxt 项目中如何使用 scss ?与 Vue 中使用的有和不同?也简单,只是配置上略有不同,使用上没有不同。先安装 node-sass sass-loader ,如下:

安装成功后,就可以在页面里使用 scss 了,无需任何配置,如下:

第一步:安装 @nuxtjs/style-resources

第二步:配置 nuxt.config.js

项目重启后就可以了,欢迎留言 评论

关于element-ui的按需引入配置

前言:因为刚开始搭建项目框架的时候比较急,那时候确认要使用element-ui框架,就直接去官网照着安装全局引入,最近项目结束后,发现首页的加载速度有点小慢,就准备将项目内的所有引入的element-ui组件全部归类出来,按需引入!怕忘记自己的这一套引入方式,因此记录,废话不多说,上菜!

目录结构我就上传了,本框架使用的是vue版本的,未转换为ts版本!

先创建一个companyImport.js,将element-ui的样式及所使用的组件全部引入,格式如下

然后进入main.js文件中,将之前定义的文件引入,然后使用Vue.use(xxx)进行全局声明

按照上面的配置,蹬~蹬~蹬~,之前页面内使用的组件就不报错了,因为我这个demo是写在vue-cli的vue-electron的模板下的,所以这里配置文件不一样,请关注重点!