zoukankan      html  css  js  c++  java
  • Laravel Mix编译前端资源

     目前项目是使用的vue+laravel来写的,其中laravel和vue分别放了一个目录,但是这样有个问题,那就是vue需要经常更新,不然运行项目会经常出现各种问题,这里就看了看laravel的文档,才知道还有Mix这个组件,进行编译前后端资源。下载完成后的目录和laravel是一样的,只是在根目录下面有一个node_models目录。

    安装:

    安装Node,首先要确保自己的电脑上面有安装Node。

    使用:node -v    和   npm -v查看是否有版本号,有即表示有安装Node,否则需要安装Node。

    cdn.jsdelivr.net/npm/vue,下载最新的Node。

    接下来就需要安装Laravel Mix,首先安装Laravel项目:composer create-project --prefer-dist laravel/laravel blog  这里项目的名字叫blog  。

    安装成功后,进入安装目录。

    安装前端依赖:npm install(这里可以选择淘宝镜像)

    使用例子:

    修改 routes/web.php 文件为:

    Route::get('/',function(){

    return view('index');

    });

    新建一个Hello.vue文件

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

    1.  
      <template>
    2.  
      <div>
    3.  
      <h1>Hello, Larvuent!</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 Demo.'
    13.  
      }
    14.  
      }
    15.  
      }
    16.  
      </script>
    17.  
       
    18.  
      <style>
    19.  
      .hello {
    20.  
      font-size: 2em;
    21.  
      color: green;
    22.  
      }
    23.  
      </style>

    修改 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.  
      });

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

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

    1.  
      <!doctype html>
    2.  
      <html lang="en">
    3.  
      <head>
    4.  
      <meta charset="UTF-8">
    5.  
      <title>Larvuent</title>
    6.  
      </head>
    7.  
      <body>
    8.  
      <div id="app"></div>
    9.  
       
    10.  
      <script src="{{ mix('js/app.js') }}"></script>
    11.  
      </body>
    12.  
      </html>

    编译:运行  npm run dev

    提示编译成功,并访问页面:输入http://192.168.1.112

    显示如下表示成功:

    现在已经完成vue+laravel了,还需要引入element.

    npm i element-ui -S   即可引入element

    修改 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);

    修改Hello.vue,使用element组件。

    1.  
      <template>
    2.  
      <div>
    3.  
      <h1>Hello, Larvuent!</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>

    再次运行npm run dev  进行编译前端资源。然后访问页面如下:

    这里修改了一个vue文件就要重新编译一次,很麻烦,所有可以运行  npm run watch 就可以不需要再次编译了,每次修改过后的代码自动就会编译。

    这里还有一个很重要的问题,那就是很多人参照以上的步骤会报错,并不会出现正常的页面。

    很多人都会出现这样的问题。

    所有需要在index页面加一个header头,就可以了。

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

    目前都只是最基本的使用,大型项目是需要使用vue路由的。所有这里需要安装路由。

    运行  npm install vue-router --save-dev  安装路由。

    配置:

    在 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.  
      });

    在 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.  
      });

    重新编译。

  • 相关阅读:
    异步编程系列第04章 编写Async方法
    异步编程系列第03章 自己写异步代码
    异步编程系列第02章 你有什么理由使用Async异步编程
    异步编程系列第01章 Async异步编程简介
    初探asp.net异步编程之await
    Sql Server 覆盖索引
    把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)
    redis+cookies实现session机制(解决 手机浏览器不自动回传cookies导致session不可用问题)
    把阅读当作一种人生习惯来培养
    SAS中的剔除空格函数
  • 原文地址:https://www.cnblogs.com/guiyishanren/p/10651596.html
Copyright © 2011-2022 走看看