非webpack require.js + vue + vueRouter + iView 实现按需加载

适合一个人开发的时候,在整个php框架下,又想单页,又可以直接后端assign变量穿透到模板。又不想写接口搞前后分离脚手架一大堆npm 包,

在php模板下 引入require.js

<!DOCTYPE html>
<html lang="zh_CN" style="overflow: hidden;">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <!-- Set render engine for 360 browser -->
    <meta name="renderer" content="webkit">
    <meta charset="utf-8">
    <title>{:lang('ADMIN_CENTER')}</title>
    <meta name="description" content="This is page-header (.page-header &gt; h1)">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">


    <link href="__TMPL__/public/assets/themes/{:cmf_get_admin_style()}/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css">
    <!--<script src="__TMPL__/public/assets/js/lib/require.min.js" data-main="../../js/main.js"></script>-->
</head>
<body>
<div id="app">
    <router-view></router-view>
</div>
<script src="__TMPL__/public/assets/js/require.js" defer async="true" data-main="__TMPL__/public/page/init"  ></script>
</body>
</html>

 然后在require.js 中配置

// 全局配置

require.config({
    baseUrl: '/themes/admin_simpleboot3/public/',
    paths: {
        text: 'assets/js/require.text',
        css: 'assets/js/require.css',
        // 引入jQuery
        jquery: 'assets/js/jquery-1.10.2.min',
        vue: 'assets/js/vue',
        vueRouter: 'assets/js/vue-router',
        iview: 'assets/js/iview.min',
        loadComponent: 'assets/js/loadComponent',
        main: 'page/main',
        user: 'page/user',
        userc: 'page/user',

    },
    shim: {
        iview: {
            deps: ['vue'],
            exports: 'iview'
        },
    },
    map: {
    }
})

//全局配置
require(['vue', 'iview', 'vueRouter', 'css!assets/css/common'], function (Vue, iView, VueRouter) {


    //按需加载
    var setComponent = function (name, component) {
        Vue.component(name, function (resolve, rejectreject) {
            require([component],function (params) {
                resolve(params)
            })
        });
    }


    setComponent('w-main', 'main');
    setComponent('w-user','user');



    const routes = [
        {path: '/', component: {template: '<w-main></w-main>'},children:[
                {path: '/user', component: {template: '<w-user></w-user>'}},
                {path: '/bar', component: {template: '<div>bar</div>'}},
                {path: '/foot', component: {template: '<div>foot</div>'}}
         ]},
    ]
    const router = new VueRouter({
        routes // (缩写) 相当于 routes: routes
    })




    Vue.use(iView)
    Vue.use(VueRouter)

    var vue = new Vue({
        el: "#app",
        router,
        data: {
            msg: "1",
        }
    });
})

  

使用require.text.js 加载页面 ,使用require.css.js 加载css

require.text.js 直接获取后端 

ce23a8808e739cd7c79263ed6d0056de403.jpg

define(['vue','text!/admin/main','css!assets/css/main'],function (Vue,html) {
      return {
          template:html,
          data () {
              return {
                  isCollapsed: false
              }
          },
          computed: {
              rotateIcon () {
                  return [
                      'menu-icon',
                      this.isCollapsed ? 'rotate-icon' : ''
                  ];
              },
              menuitemClasses () {
                  return [
                      'menu-item',
                      this.isCollapsed ? 'collapsed-menu' : ''
                  ]
              }
          },
          methods: {
              collapsedSider () {
                  this.$refs.side1.toggleCollapse();
              }
          }
      }
});

 

 

切换路由 可以看到user 是按需加载的 并没有一次新加载完成7bedb4f7db23dd317198d1b1c0d209cc3cd.jpg

1b48e984dd6675b3a03d1e79fdd0a0526d8.jpg

转载于:https://my.oschina.net/woddp/blog/3066332

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值