vue系列之requireJs中引入vue-router的方法


Posted in Javascript onJuly 18, 2018

requireJs简介

参数配置

requireJS 常用的方法与命令也就两个,因此requireJS使用起来非常简单。

require
define

其中define是用于定义模块,而require是用于载入模块以及载入配置文件。

define([id,deps,] callback);
require(deps[,callback]);

加载配置文件

独立的引入配置文件也有两种方式,一种是通过script标签加载外部JS文件形式:

<script src="js/require.js"></script>
<script src="js/app.js"></script>

另一种方式则是使用 require 提供的 data-main 属性,该属性是直接写在引入require.js的script标签上,在require.js 加载完毕时,会自动去加载配置文件 app.js。

<script data-main="js/app" src="js/require.js"></script>

通过 data-main 去加载入口文件,便会使配置对象中的 baseUrl 属性默认指向地址改为 app.js 所在的位置,相比之下我更加推荐这种方式,因为它更可能的方便快捷。

<script data-main="js/app.js" src="js/require.js"></script>

注意:你在main.js中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。

常用参数配置

urlArgs

RequireJS获取资源时附加在URL后面的额外的query参数。作为浏览器或服务器未正确配置时的“cache bust”手段很有用。使用cache bust配置的一个示例:
javascript:;urlArgs: "bust=" + (new Date()).getTime()
在开发中这很有用,但请记得在部署到生成环境之前移除它。

deps

用于声明require.js在加载完成时便会自动加载的模块,值是一个数组,数组元素便是模块名。

config

config属性可以为模块配置额外的参数设定,其使用格式就是以模块名或者模块ID为key,然后具体的参数为value。

shim

shim为那些没有使用define()来声明依赖关系、设置模块的"浏览器全局变量注入"型脚本做依赖和导出配置。

require.config({
  baseUrl : "./src",
  paths :{
    jquery:"./lib/jquery.min",
    vue:"./lib/vue",
    vueResource:"./lib/vue-resource.min",
    vueX:"./lib/vuex",
    api :"./api/index",
    lodash : "./lib/lodash.min",
    bootstrap : "./assets/js/bootstrap/js/bootstrap.min",
    ripples : "./assets/js/bootstrap-material-design/js/ripples.min",
    material:"./assets/js/bootstrap-material-design/js/material.min"
  },
  shim : {
    bootstrap : ['jquery'],
    ripples:['jquery'],
    material:['jquery'],
  },
  packages: [
    {
      name: 'components',
      location: 'component',
      main: 'components'
    },
    {
      name : "vuex",
      location :"vuex",
      main : "vuex"
    }
  ]
});

vue项目

requirejs配置

require.config({
  baseUrl : "./src",
  paths :{
    vue:"./lib/vue",
    vueRouter: "./lib/vue-router",
    promise: "./lib/q",
    router: "./js/router",
    header: "./js/components/header"
  },
  shim : {
    vueRouter : ['vue']
  }
});

router配置

define(["resolve"], function(resolve){
  return [
    {
      path: "/home",
      name: "home",
      component: resolve("../js/xx.js")
    },
    {
      path: "/news",
      name: "news",
      component: resolve("../js/xx.js")
    }
  ];
});

resolve.js

define(["require", "promise"], function(require, Q){
  var resolve = function(dep) {
    return function() {
      if (!(dep instanceof Array)) {
        dep = [dep];
      }
      var deferred = Q.defer();
      require(dep, function(res) {
        deferred.resolve(res);
      });
      return deferred.promise;
    };
  };
  return resolve;
});

index

<body>
  <header></header>
  <router-view></router-view>
</body>
require(["vue", "vueRouter", "router", "header"], function(vue, vueRouter, router, header) {
  vue.use(vueRouter);
  var routes = new vueRouter({
    routes: router
  });
  new Vue({
    router: routes,
    data: function(){
      return {
        aa: true
      };
    }
  }).$mount("body");
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
统计出现最多的字符次数的js代码
Dec 03 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
JS判断图片是否加载完成方法汇总(最新版)
May 13 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
利用js获取下拉框中所选的值
Dec 01 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
Mar 22 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
Vue隐藏显示、只读实例代码
Jul 18 #Javascript
详解vue中axios的封装
Jul 18 #Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 #Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 #Javascript
使用Vue实现图片上传的三种方式
Jul 17 #Javascript
vue的token刷新处理的方法
Jul 17 #Javascript
vue 权限认证token的实现方法
Jul 17 #Javascript
You might like
PHP中路径问题的解决方案
2006/10/09 PHP
php桌面中心(三) 修改数据库
2007/03/11 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
js写一个字符串转成驼峰的实例
2013/06/21 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
Django实现的自定义访问日志模块示例
2017/06/23 Python
关于Django外键赋值问题详解
2017/08/13 Python
python搜索包的路径的实现方法
2019/07/19 Python
python 实现单通道转3通道
2019/12/03 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
中学运动会广播稿
2014/01/19 职场文书
毕业生自荐书
2014/02/03 职场文书
微笑服务演讲稿
2014/05/13 职场文书
车贷收入证明范本
2014/09/14 职场文书