Laravel5.6 + Vue2+ + Element 环境搭建

新建 Laravel5.6 项目

composer create-project --prefer-dist laravel/laravel Larvuent         laravue                      // 新项目名为

Larvuent 安装完成后

 进入 项目根目录 cd Larvuent

npm install /cnpm  install                                          // 速度慢的请自行切换淘宝镜像 cnpm

3.修改 Laravel 路由

修改 routes/web.php 文件为

Route::get('/', function () {
    return view('index');
});

 

4.新建 Hello.vue 文件

在 resources/assets/js/components 目录下新建 Hello.vue 文件

 
  1. <template>

  2. <div>

  3. <h1>Hello, Larvue!</h1>

  4. <p class="hello">{{ msg }}</p>

  5. </div>

  6. </template>

  7.  
  8. <script>

  9. export default {

  10. data() {

  11. return {

  12. msg: 'This is a Laravel with Vue and Element '

  13. }

  14. }

  15. }

  16. </script>

  17.  
  18. <style>

  19. .hello {

  20. font-size: 2em;

  21. color: green;

  22. }

  23. </style>

5.修改 app.js 文件,渲染组件

修改 resources/assets/js/app.js 文件

 
  1. require('./bootstrap');

  2.  
  3. window.Vue = require('vue');

  4.  
  5. // Vue.component('example', require('./components/Example.vue')); // 注释掉

  6. import Hello from './components/Hello.vue'; // 引入Hello 组件

  7.  
  8. const app = new Vue({

  9. el: '#app',

  10. render: h => h(Hello)

  11. });

6.新建 Laravel 视图文件,和 Vue 交互

在 resources/views 目录下新建 index.blade.php 文件

 
  1. <!doctype html>

  2. <html lang="en">

  3. <head>

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

  5. <title>Larvue</title>

  6. </head>

  7. <body>

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

  9.  
  10. <script src="{{ mix('js/app.js') }}"></script>

  11. </body>

  12. </html>

 

7.编译前端组件,运行

执行以下命令,编译前端资源

npm run dev

8.引入 Element

执行命令,安装 ElementUI

npm i element-ui -S

修改 resources/assets/js/app.js 文件

 
  1. import Hello from './components/Hello.vue'; // 引入Hello 组件

  2. import ElementUI from 'element-ui';

  3. import 'element-ui/lib/theme-default/index.css';

  4. Vue.use(ElementUI);

9.修改 Hello.vue 文件,使用 Element 组件

修改 resources/assets/js/components/Hello.vue 文件为

 
  1. <template>

  2. <div>

  3. <h1>Hello, Larvue!</h1>

  4. <el-button @click="visible = true">按钮</el-button>

  5. <el-dialog v-model="visible">

  6. <p>欢迎使用 Element</p>

  7. </el-dialog>

  8. </div>

  9. </template>

  10.  
  11. <script>

  12. export default {

  13. data() {

  14. return {

  15. visible: false

  16. }

  17. }

  18. }

  19. </script>

  20.  
  21. <style>

  22. .hello {

  23. font-size: 2em;

  24. color: green;

  25. }

  26. </style>

10.再次编译前端资源,运行

执行

npm run dev 

CSRF 防护

Laravel 为了避免应用遭到跨站请求伪造攻击(CSRF),自动为每一个有效用户会话生成一个 CSRF 令牌,该令牌用于验证授权用户和发起请求者是否是同一个人。

修改 resources/views/index.blade.php 文件为

 
  1. <!doctype html>

  2. <html lang="en">

  3. <head>

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

  5. <meta name="csrf-token" content="{{ csrf_token() }}">

  6. <title>Larvue</title>

  7. </head>

  8. <body>

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

  10.  
  11. <script src="{{ mix('js/app.js') }}"></script>

  12. </body>

  13. </html>

安装 vue-router

执行命令,安装 vue-router

npm install vue-router --save-dev

 

配置 vue-router

在 resources/assets/js 目录下新建目录 router ,同时在 router 目录下新建 index.js 文件

 
  1. import Vue from 'vue';

  2. import VueRouter from 'vue-router';

  3. Vue.use(VueRouter);

  4.  
  5. export default new VueRouter({

  6. saveScrollPosition: true,

  7. routes: [

  8. {

  9. name: 'hello',

  10. path: '/hello',

  11. component: resolve => void(require(['../components/Hello.vue'], resolve))

  12. }

  13. ]

  14. });

 

引入 vue-router

在 resources/assets/js 目录下新建 App.vue 文件

 
  1. <template>

  2. <div>

  3. <h1>Hello, {{ msg }}!</h1>

  4. <router-view></router-view> <!--路由引入的组件将在这里被渲染-->

  5. </div>

  6. </template>

  7.  
  8. <script>

  9. export default {

  10. data() {

  11. return {

  12. msg: 'Vue'

  13. }

  14. }

  15. }

  16. </script>

  17.  
  18. <style>

  19. </style>

修改 resources/assets/js/app.js 文件为

 
  1. // import Hello from './components/Hello.vue';

  2. import App from './App.vue';

  3. import ElementUI from 'element-ui';

  4. import 'element-ui/lib/theme-default/index.css';

  5. Vue.use(ElementUI);

  6.  
  7. import router from './router/index.js';

  8.  
  9. const app = new Vue({

  10. el: '#app',

  11. router,

  12. render: h => h(App)

  13. });

 

重新编译

npm run dev

路由访问 hello 组件

以后如果要添加组件,只需在 resources/assets/js/components 目录下新建 vue 文件,在 resources/assets/js/router/index.js 文件里引入,然后就可以通过路由访问了。

代码拆分

代码拆分是将一些不经常变动的代码提取出来,以避免每次都要重新编译,如果你频繁更新应用的 JavaScript,需要考虑对 vendor 库进行提取和拆分,这样的话,一次修改应用代码不会影响 vendor.js 文件的缓存。

Laravel Mix 的 extract 方法可以实现这样的功能:

修改项目根目录下的 webpack.mix.js 文件

 
  1. mix.js('resources/assets/js/app.js', 'public/js')

  2. .sass('resources/assets/sass/app.scss', 'public/css')

  3. .extract(['vue','axios']);

  •  

extract 方法接收包含所有库的数组或你想要提取到 vendor.js 文件的模块,使用上述代码作为示例,Mix 将会生成如下文件:

 
  1. public/js/manifest.js // Webpack manifest runtime

  2. public/js/vendor.js // vendor 库

  3. public/js/app.js // 应用代码

  • 同时修改 resources/views/index.blade.php 文件为
 
  1. <!doctype html>

  2. <html lang="en">

  3. <head>

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

  5. <meta name="csrf-token" content="{{ csrf_token() }}">

  6. <title>Larvuent</title>

  7. </head>

  8. <body>

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

  10.  
  11. <script src="{{ mix('js/manifest.js') }}"></script>

  12. <script src="{{ mix('js/vendor.js') }}"></script>

  13. <script src="{{ mix('js/app.js') }}"></script>

  14. </body>

  15. </html>

  •  

全局的 mix 函数会根据 public/mix-manifest.json 中的路径去加载对应的文件,同时也要注意引入三个 js 文件的顺序,以避免出错。

重新执行命令,就可以了。

npm run dev
  •  

使用下面的命令,可以监视前端资源的改变,并自动编译。

npm run watch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值