首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails-类javascript中的autoload -允许依赖项从根程序包请求在webpack中

Rails-类javascript中的autoload -允许依赖项从根程序包请求在webpack中
EN

Stack Overflow用户
提问于 2018-07-13 22:13:16
回答 1查看 181关注 0票数 0

我正在写一个框架包,我想让它能够自动需要来自主项目src/的模块。如果您熟悉rails,这类似于它的自动加载功能。

因此,如果在您的web应用程序中遵循目录约定,例如src/models/my-model.js,那么框架可能需要my-model模块本身。该框架是web应用程序的一个依赖项,它只需要知道关系的名称(即"todos"),以便需要模型(即。src/models/todo.js)

我已经尝试在我的web应用程序中添加我的web应用程序src目录,但它似乎不适用于依赖项的搜索路径(不确定),所以我的架构库仍然无法在我的web应用程序中找到模块。

我还(拼命地)尝试将require从web应用程序传递到依赖项,然后在依赖项代码中调用var MyModel = this.thePassedInRequireFn("./models/" + modelName),但它出错了:

代码语言:javascript
复制
(`Uncaught Error: Cannot find module './models/my-model'
    at MyFramework.webpackEmptyContext

有谁知道如何做到这一点?

如果这个解决方案能够独立使用,那就太好了,但对我来说,最重要的是对webpack的兼容性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 05:14:08

以下是使用require.context()的webpack的具体答案。

https://webpack.js.org/guides/dependency-management/#require-context

在web应用程序中创建一个require上下文。例如:

代码语言:javascript
复制
const requireModule = require.context('./models/', true);

然后将requireModule作为web应用程序的依赖项传递给框架。

如果您的web应用程序在文件./models/todo-item.js中有一个模型,并且框架被赋予了模型名称todoItem,则框架可以仅使用模型名称来请求它,如下所示:

代码语言:javascript
复制
let fileName = `./${kebabCase(modelName)}`;
let module = this.requireModule(fileName).default;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51327159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档