与RequireJS模块/包的相对路径

Relative paths with RequireJS modules/packages(与RequireJS模块/包的相对路径)
本文介绍了与RequireJS模块/包的相对路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是RequireJS的新手,我遇到了一些问题。我已经使用RequireJS编写了一个构建在主干上的小框架,我希望它可以在不同的项目中重用。因此,通过一些搜索,我了解到Required允许打包。这似乎就是我要找的。我有一个main.js文件来启动我的应用程序,基本上如下所示:

require.config({
  packages: ['framework']
});

require(['framework'], function(framework) {
  framework.createDash();
});

然后在与我的main.js相同的目录中,我有另一个名为"framework"的目录,它包含另一个main.js,如下所示:

define(function(require, exports, module) {
  exports.createDash = function(dash, element) {
    require(['dash/dash.model', 'dash/dash.view'], function(DashModel, DashView) {
      return new DashView({
        model: new DashModel(dash),
        el: element ? element : window
      });
    });
  };
});

在搜索中,我找到this page,这表明‘required’参数的作用域应该是子模块。然而,当我尝试请求一些东西时,它们仍然相对于我最初的main.js。我试了很多方法,找了几个小时都没有结果。有没有什么方法可以将我的请求/定义调用包含在我的包中,相对于它的根中的main.js?

推荐答案

您需要将您的子模块定义为Required Configuration中的Package:

require.config({
  packages: [
    { name: 'packagename',
      location: 'path/to/your/package/root',  // default 'packagename'
      main: 'scriptfileToLoad'                // default 'main' 
    }]
  ... some other stuff ...
});

要加载模块,您只需在要求处使用‘Packagename’:

define(['jquery', 'packagename'], function($, MyPackage) {
  MyPackage.useIt()
});

在您的软件包中,您必须使用./前缀来加载相对于您的子模块的文件:

define(['globalDependency', './myLocalFile'], function(Asdf, LocalFile) {
  LocalFile.finallyLoaded();
});

有一个很有用的快捷方式:如果您的包名与您所在的位置相同,并且您的主文件名为‘main.js’,那么您可以替换它

  packages: [
    { name: 'packagename',
      location: 'packagename',
      main: 'main'
    }]

至此:

  packages: ['packagename']

据我所知,您已经尝试定义一个包,但是您是否也使用了./前缀?如果没有此前缀,Required将尝试在其全局根路径中查找文件。如果没有包,./将无用,因为相对路径与全局根路径相同。


干杯

这篇关于与RequireJS模块/包的相对路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)