vue-cli项目搭建&elementUI[web前端]

╰+攻爆jí腚メ 2024-04-03 08:35 210阅读 0赞

vue-cli 是官方提供的一个脚手架,是一种集成式项目构建,后期集成一些其它组件时,可以通过命令行自动帮助我们下载,快速生成一个统一的vue项目模板,支持热部署,打包,测试;类似于后端的Maven(只需要给一个jar包的坐标[地址],工具就会自动下载jar包,并且依赖关联到我们的项目中去),创建时可以选择一个骨架项目,这个骨架项目就是脚手架,可以使我们的开发更加的快速。

主要的功能

  • 统一的目录结构
  • 本地调试
  • 热部署
  • 单元测试
  • 集成打包上线

需要的环境

Node.js

简单的说Node.js就是运行在服务端的JavaScript,是一个基于Chrome JavaScript运行时建立的一个平台,是一个事件驱动I/O服务端JavaScript环境,基于Google的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。

npm

npm是Node.js 的包管理工具,用来安装各种 Node.js 的扩展;npm 是JavaScript 的包管理工具,也是世界上最大的软件注册表;有超过 60 万个JavaScript 代码包可供下载,每周下载约 30 亿次,npm让JavaScript 开发人员可以轻松地使用其他开发人员共享的代码。

vue-cli 项目搭建步骤

1 安装node前端环境,可以帮助我们去下载其它组件

下载node.js

  • 最新版:下载 | Node.js 中文网
  • 以往版本:以往的版本 | Node.js

a7257b297fb74f5cac7649bab275c205.jpeg

034028a303224f9b9e673dc7d597dcc2.jpeg

35116e582acf4f9cbd037064fc1b7ad8.jpeg

cc406ebc48964028bff5a5eb374c1805.jpeg

6d4cc7a7a8e84372bd5c0c0617251e54.jpeg

0d45a6e7221243b09be151f2bd26f7a1.jpeg

bcabda97d3794f8e9173e492704b6ba4.jpeg

fed19206f36345c1aa46ac600a5d9570.jpeg

344dfffdba6a4d2ab2a35fd4416689f9.jpeg

下载完成后配置环境变量,步骤如下(安装完后会自动配置):

009badf52e25412698990e9590f75dcd.jpeg

f13704910d12410ca5e4eeb868fa483f.jpeg

ffeb0b8d5580469093f7bf53b85e9e86.jpeg

测试:可以正常输出版本说明安装成功

b376b4f1492c4aa3b524c469e2dd18d0.jpeg

2 在HbuilderX中创建一个vue-cli项目(标准的前端项目)

  • 实际是需要通过前端命令创建的

3 项目结构介绍" class="reference-link">快速搭建一个vue-cli项目:51d9bf43af194e59bfac517dfd11fa81.jpeg3 项目结构介绍

vue-cli项目结构:

a1fdd825c4b84d749b6f21b787f748fd.png

  • 单页面项目架构:整个项目中只有一个html,用来被vue对象绑定

    ,里面提出一个组件的概念Hello.vue,只需要在index.html中切换不同的组件即可,整个项目中始终只用创建一个vue对象即可,这样做一些全局的设置就非常简单,只需要为唯一的vue对象设置即可。

  • 单页面与组件的关系:

4 创建成功后,在命令行窗口启动前端项目" class="reference-link">41c32faebc084c2d8eb8a2ca6f54dc9f.jpeg4 创建成功后,在命令行窗口启动前端项目

  • 前端依赖一个node环境,node环境可以提供一个服务,借助node环境运行项目

76c3636393df4c4a98240f924255b1ea.jpeg

  • npm run serve:具体命令需要看配置文件中如何定义

  • 启动成功后,出现访问项目地址:http://127.0.0.1:8080/

  • 在命令行中使用快捷键ctrl+c可以停止服务

981aa41bca574fd887871a8bac046f5f.jpeg

打开http://127.0.0.1:8080/ :

73fc0eaa93dd4654bf430426641c423f.jpeg

终端无法正常打开的几种解决方法:

1. 选中项目——>右键——>打开外部命令——>npm run serve

e84e8c3cdcfe48319829e544fe610f02.jpeg

2. 工具——>插件安装

646a466d7f05494fb5109db3ce2184e8.jpeg

3. 使用命令,在命令行输入npm run serve

选中项目——>右键——>在外部资源管理器打开——>选中地址:

be831a322a9741e997665bcd103e333a.png

输入cmd——>回车:8dba3a9d58a944829294ab6ac1054a9d.png

在命令行输入npm run serve:3acb860607f146238cc9b00f695fe5ea.png

4. 把项目导入到idea中

选择open or import导入项目——>选择项目地址——>回车打开——>命令行输入npm run serve

0b85475f53134a82ac02f9e9008b83e9.png

524aa8a8cebc4e2f942e7f44fbea343d.png

组件路由

vue router是Vue.js官方的路由管理器,它和 Vue.js的核心深度集成,让构建单页面应用变得易如反掌。

准备工作

先搭建两个简单组件,一个登录组件,一个注册组件,一会用来测试。

0edf3672ba8043acab741de3312b9556.png

2c4701dc93d04c00b14d6e1de6ef1879.png

安装

vue-router 是一个插件包,所以我们还是需要用 npm 来进行安装的,打开命令行工具,进入你的项目目录,输入下面命令。

npm i vue-router@3.5.3

4aa0e473b4f14cdc809087d422033cbb.png

下载好后就会自动在package.json中将vue-router这个组件下载下来放在node_modules中

da5f4af193a54cee842afe75694dfe2b.png

f80796f2a54f485189c5747b4d6bd687.png

搭建步骤

1 创建路由的配置文件

  • 在src里创建 router 目录,在router目录创建 index.js 文件,在其中配置路由

c9054215e5664a58bda0de2dfc021641.png

代码:

  1. import Vue from 'vue';
  2. import router from 'vue-router'; /* 导入路由 */
  3. /* 导入组件 组件名字一般首字母大写*/
  4. import Login from "../Login.vue";
  5. import Reg from "../Reg.vue";
  6. Vue.use(router);
  7. /* 定义组件路由 */
  8. var rout = new router({
  9. routes: [
  10. {
  11. path: '/login', //为组件定义地址 一般小写
  12. name: 'Login', //为组件定义名字(可以不加)
  13. component: Login
  14. },
  15. {
  16. path: '/reg',
  17. component: Reg
  18. }
  19. ]
  20. });
  21. //导出路由对象
  22. export default rout;

2 在main.js中配置路由

f71edc4f7d234071952dce8159d3d8b5.png

代码:

  1. import router from './router/index.js'
  2. Vue.use(router)
  3. new Vue({
  4. render: h => h(App),
  5. router,
  6. }).$mount('#app')

3 使用

  • npm run serve启动项目

c9ee60170603431a9719a67e788197a6.gif

4 前端项目打包

  • npm run build

  • 不管我们的项目有多少个组件,打包后的内容放在一个dist目录中,只对外暴露一个index.html,其余的被压缩处理成js文件

7dda723c885f4c619db65b6ed4e08fc3.png

ElementUI

Element,一套为开发者、设计师和产品经理准备的基于Vue 2.0的桌面端组件库。

安装

1 npm安装

  • 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用。

    npm i element-ui -S

328739323d9f47978f470e7afdb95ad3.png

5faea4b020b2425f85d0f61ad857a459.png

2 CDN

目前可以通过 unpkg.com/element-ui 获取到最新版本的资源,在页面上引入js和css文件即可开始使用。

  1. <!-- 引入样式 -->
  2. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  3. <!-- 引入组件库 -->
  4. <script src="https://unpkg.com/element-ui/lib/index.js"></script>

引入 Element

可以引入整个 Element,或是根据需要仅引入部分组件,这里我们以完整引入为例。

完整引入

在 main.js 中写入以下内容:

  1. import Vue from 'vue';
  2. import ElementUI from 'element-ui';
  3. import 'element-ui/lib/theme-chalk/index.css';
  4. import App from './App.vue';
  5. Vue.use(ElementUI);
  6. new Vue({
  7. el: '#app',
  8. render: h => h(App)
  9. });

以上代码便完成了 Element 的引入。需要注意的是,样式文件需要单独引入。

f5440dba41af47cbb47dfb96feaa721c.png

按需引入

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

首先,安装 babel-plugin-component:

npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

  1. {
  2. "presets": [["es2015", { "modules": false }]],
  3. "plugins": [
  4. [
  5. "component",
  6. {
  7. "libraryName": "element-ui",
  8. "styleLibraryName": "theme-chalk"
  9. }
  10. ]
  11. ]
  12. }

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:

  1. import Vue from 'vue';
  2. import { Button, Select } from 'element-ui';
  3. import App from './App.vue';
  4. Vue.component(Button.name, Button);
  5. Vue.component(Select.name, Select);
  6. /* 或写为
  7. * Vue.use(Button)
  8. * Vue.use(Select)
  9. */
  10. new Vue({
  11. el: '#app',
  12. render: h => h(App)
  13. });

完整组件列表和引入方式(完整组件列表以 components.json 为准)

  1. import Vue from 'vue';
  2. import {
  3. Pagination,
  4. Dialog,
  5. Autocomplete,
  6. Dropdown,
  7. DropdownMenu,
  8. DropdownItem,
  9. Menu,
  10. Submenu,
  11. MenuItem,
  12. MenuItemGroup,
  13. Input,
  14. InputNumber,
  15. Radio,
  16. RadioGroup,
  17. RadioButton,
  18. Checkbox,
  19. CheckboxButton,
  20. CheckboxGroup,
  21. Switch,
  22. Select,
  23. Option,
  24. OptionGroup,
  25. Button,
  26. ButtonGroup,
  27. Table,
  28. TableColumn,
  29. DatePicker,
  30. TimeSelect,
  31. TimePicker,
  32. Popover,
  33. Tooltip,
  34. Breadcrumb,
  35. BreadcrumbItem,
  36. Form,
  37. FormItem,
  38. Tabs,
  39. TabPane,
  40. Tag,
  41. Tree,
  42. Alert,
  43. Slider,
  44. Icon,
  45. Row,
  46. Col,
  47. Upload,
  48. Progress,
  49. Spinner,
  50. Badge,
  51. Card,
  52. Rate,
  53. Steps,
  54. Step,
  55. Carousel,
  56. CarouselItem,
  57. Collapse,
  58. CollapseItem,
  59. Cascader,
  60. ColorPicker,
  61. Transfer,
  62. Container,
  63. Header,
  64. Aside,
  65. Main,
  66. Footer,
  67. Timeline,
  68. TimelineItem,
  69. Link,
  70. Divider,
  71. Image,
  72. Calendar,
  73. Backtop,
  74. PageHeader,
  75. CascaderPanel,
  76. Loading,
  77. MessageBox,
  78. Message,
  79. Notification
  80. } from 'element-ui';
  81. Vue.use(Pagination);
  82. Vue.use(Dialog);
  83. Vue.use(Autocomplete);
  84. Vue.use(Dropdown);
  85. Vue.use(DropdownMenu);
  86. Vue.use(DropdownItem);
  87. Vue.use(Menu);
  88. Vue.use(Submenu);
  89. Vue.use(MenuItem);
  90. Vue.use(MenuItemGroup);
  91. Vue.use(Input);
  92. Vue.use(InputNumber);
  93. Vue.use(Radio);
  94. Vue.use(RadioGroup);
  95. Vue.use(RadioButton);
  96. Vue.use(Checkbox);
  97. Vue.use(CheckboxButton);
  98. Vue.use(CheckboxGroup);
  99. Vue.use(Switch);
  100. Vue.use(Select);
  101. Vue.use(Option);
  102. Vue.use(OptionGroup);
  103. Vue.use(Button);
  104. Vue.use(ButtonGroup);
  105. Vue.use(Table);
  106. Vue.use(TableColumn);
  107. Vue.use(DatePicker);
  108. Vue.use(TimeSelect);
  109. Vue.use(TimePicker);
  110. Vue.use(Popover);
  111. Vue.use(Tooltip);
  112. Vue.use(Breadcrumb);
  113. Vue.use(BreadcrumbItem);
  114. Vue.use(Form);
  115. Vue.use(FormItem);
  116. Vue.use(Tabs);
  117. Vue.use(TabPane);
  118. Vue.use(Tag);
  119. Vue.use(Tree);
  120. Vue.use(Alert);
  121. Vue.use(Slider);
  122. Vue.use(Icon);
  123. Vue.use(Row);
  124. Vue.use(Col);
  125. Vue.use(Upload);
  126. Vue.use(Progress);
  127. Vue.use(Spinner);
  128. Vue.use(Badge);
  129. Vue.use(Card);
  130. Vue.use(Rate);
  131. Vue.use(Steps);
  132. Vue.use(Step);
  133. Vue.use(Carousel);
  134. Vue.use(CarouselItem);
  135. Vue.use(Collapse);
  136. Vue.use(CollapseItem);
  137. Vue.use(Cascader);
  138. Vue.use(ColorPicker);
  139. Vue.use(Transfer);
  140. Vue.use(Container);
  141. Vue.use(Header);
  142. Vue.use(Aside);
  143. Vue.use(Main);
  144. Vue.use(Footer);
  145. Vue.use(Timeline);
  146. Vue.use(TimelineItem);
  147. Vue.use(Link);
  148. Vue.use(Divider);
  149. Vue.use(Image);
  150. Vue.use(Calendar);
  151. Vue.use(Backtop);
  152. Vue.use(PageHeader);
  153. Vue.use(CascaderPanel);
  154. Vue.use(Loading.directive);
  155. Vue.prototype.$loading = Loading.service;
  156. Vue.prototype.$msgbox = MessageBox;
  157. Vue.prototype.$alert = MessageBox.alert;
  158. Vue.prototype.$confirm = MessageBox.confirm;
  159. Vue.prototype.$prompt = MessageBox.prompt;
  160. Vue.prototype.$notify = Notification;
  161. Vue.prototype.$message = Message;

具体组件使用参考 API 文档: 组件 | Element

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读

    相关 VUE Webpack前端项目框架

    当前使用前后端分离框架实施的项目越来越多,前后端分离技术实施项目可以是项目成员分工愈发明确,开发效率更高,由于后台微服务框架普及与高效,前后端分离技术将成为主流软件框架。本文使