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对img进行操作(换图片/切图/轮换/停止)
Apr 17 Javascript
node.js中的fs.createReadStream方法使用说明
Dec 17 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
Jul 27 Javascript
js限制文本框只能输入中文的方法
Aug 11 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
May 12 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
vue实现在v-html的html字符串中绑定事件
Oct 28 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 Javascript
JS删除对象中某一属性案例详解
Sep 08 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
谈谈新手如何学习PHP
2006/12/23 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
QQ登录简单实现代码
2021/03/09 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
React实现全选功能
2020/08/25 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
优秀教师获奖感言
2014/01/31 职场文书
护理不良事件检讨书
2014/02/06 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
高考励志标语
2014/06/05 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript