使用带有

时间:2016-09-16 22:29:18

标签: requirejs materialize

我使用duwelryal使用其入门套件(http://durandaljs.com/get-started.html

创建了一个新项目

然后我使用bower(bower install materialze

添加了物化

添加materialize后需要durandal配置

requirejs.config({
    paths: {
        'text': '../lib/require/text',
        'durandal':'../lib/durandal/js',
        'plugins' : '../lib/durandal/js/plugins',
        'transitions' : '../lib/durandal/js/transitions',
        'knockout': '../lib/knockout/knockout-3.1.0',
        'bootstrap': '../lib/bootstrap/js/bootstrap',
        'jquery': '../lib/jquery/jquery-1.9.1',
        'hammerjs': '../lib/hammer/hammer',
        'jquery.hammer': '../bower_components/materialize/js/jquery.hammer',
        'materialize': '../bower_components/materialize/dist/js/materialize'
    },
    shim: {
        'bootstrap': {
            deps: ['jquery'],
            exports: 'jquery'
        },
        'materialize': {
            deps: ['jquery', 'hammerjs']
        },
        'jquery.hammer': {
            deps: ['jquery', 'hammerjs', 'waves']
        }
    }
});

我最终错了 - 未捕获的错误:Mismatched anonymous define() module: function ($, Hammer)

实际上,每次刷新时,我都会遇到不同的错误,这似乎指向了一些与需求混淆的东西。我的问题是 - 如果在添加实体化之前一切都运行良好,那么如何添加它会让事情变得如此脆弱?

我做错了吗?

1 个答案:

答案 0 :(得分:1)

您的问题是1年零9个月前,现在Materialize不再将jQuery作为依赖项,我相信他们不再使用Hammer.js,或者他们将不再使用。仍然this is something everybody runs into与Materialize兼容,并且可以修复!

首先,如果您不习惯查看自己的node_modules内部模块,我鼓励您看一看,看看是否可以找到Hammer.min.js(我相信它会存在于捆绑包中2016)或Hammer.js,因为如果您开始着眼于他人的资源,您会更快地学习。之所以会出现这些问题,是因为您可以在全局或本地安装模块,并且必须管理所有版本,而且这种情况一直存在,但这是npm和节点程序包管理器的乐趣。

**

快速解答从这里开始:

**

Bower is deprecated,但是如果您在2018年使用npm,此问题对您的影响也将类似,理论上它将帮助使用凉亭的人们。 您需要包括javascript依赖项(请注意,随着1.0.0版的发布,jQuery最近变得可选)

示例1

如果我在本地安装了npm模块并且正在进行电子应用,这就是我要做的事情:

您将在CSS上遇到同样的问题,因此在foo.html中需要: <link href="./node_modules/materialize-css/dist/css/materialize.css" rel="stylesheet">

在bar.js中

您想要的:     window.Hammer = require('./node_modules/materialize-css/js/hammer.min.js')

示例2:

我在全局安装模块,并想加入Materialize,也许我使用grunt或webpack,在这个人为的示例中,我使用jquery-2.1.4.min.js

在foo.js中

window.$ = window.jQuery = require('../assets/jquery/jquery-2.1.4.min.js'); window.Hammer = require('../assets/hammer/hammer.min.js');