问题标签 [dynamic-import]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
477 浏览

python - 在python中动态加载一个包

假设我有两个几乎相同版本的python 包mymod,即mymod0 和mymod1。这些包中的每一个都有文件init .py 和 foo.py,而 foo.py 有一个函数 printme()。调用 mymod0.foo.printme() 将打印“I am mymod0”,调用 mymod1.foo.printme() 将打印“I am mymod1”。到现在为止还挺好。

但现在我需要动态导入 mymod0 或 mymod1。用户将在脚本中输入 0 或 1(作为变量“index”),然后我可以创建 packageName="mymod"+str(index)

我试过这个:

但我得到这个错误: AttributeError: 'module' object has no attribute 'foo'

我如何指定现在应该将包称为模块,以便 module.foo.printme() 可以工作?

更新:所以看起来最简单的解决方案是使用 exec() 函数。这样我可以像这样动态地创建一个导入语句:

然后:

这似乎有效。

0 投票
2 回答
2666 浏览

python - Python - 创建一个运行代码的 EXE,而不是编译时的代码

我正在制作一个设计为模块化的 pygame 程序。我正在使用文件 main.py 的 pygame2exe 构建一个 exe,它基本上只是导入真正的主游戏并运行它。我希望的是一种从 EXE 执行 Python 脚本的启动器,而不是包含所有不可变文件的单个程序。

解决此问题的最佳方法是什么?我尝试使用 imp 在运行时动态导入所有模块,而不是隐式导入它们,但这似乎破坏了对象继承。

0 投票
2 回答
1464 浏览

python - 动态导入模块导致 ImportError

所以我一直在尝试制作一个简单的程序,它将动态导入具有特定名称的文件夹中的模块。我 cdos到目录并module = __import__(module_name)在 for 循环中运行,所有描述的文件名都被迭代到变量 module_name 中。

我唯一的问题是我遇到了一个问题:

(说我作为字符串给出的变量的名称)。该文件存在,它位于提到的目录中,并且import在同一目录中工作正常。但是正常的即使导入也不适用于 cd 目录中的模块。代码如下所示。如果这是一个明显的问题,我很抱歉。

0 投票
1 回答
657 浏览

lazy-loading - Elm 中的动态/惰性导入

我想懒洋洋地在 Elm 中导入函数的定义。用例是浏览器,我可能有多个视图不需要为初始页面加载而呈现,所以我想推迟这些网络请求以加快初始加载。Polymer 使用他们的PRPL 模式来做到这一点,您可以在其中延迟加载自定义元素的定义。我环顾四周,但找不到任何表明这在 Elm 中是可能的。

任何想法,将不胜感激。如果没有表面,我会认为这是不可能的。

0 投票
2 回答
19629 浏览

python - 如何动态导入模块?

我正在尝试在 Python 中动态导入模块。现在,我有一个名为“modules”的目录,里面有两个文件;它们是 mod1.py 和 mod2.py。它们是返回时间的简单测试函数(即mod1.what_time('now')返回当前时间)。

从我的主应用程序中,我可以导入如下:

然后执行:

它有效。

我并不总是知道目录中有哪些模块可用。我想import如下:

但是我得到了错误:

我错过了什么?

0 投票
3 回答
763 浏览

meteor - Meteor 1.5:Blaze 的动态导入

我有两个问题:

1) 我想为 Blaze 使用 Meteor 1.5 Dynamic Import,但所有示例和教程都是针对 React 给出的。所以我很困惑它究竟是如何使用的。谁能举个例子。

2)我正在使用来自大气js.com 的包,比如 amcharts,我只需要在管理仪表板端。如何动态导入它们?

提前致谢!

更新(解决方案):

下面是homepage.html(父模板)

login.html(子模板)

登录.js

main.js

/lib/route.js

0 投票
0 回答
282 浏览

javascript - Meteor 1.5 具有离线支持的动态导入

我正在使用 Meteor 1.5、FlowRouter 和 Blaze。

我一直在开发一个需要离线支持的应用程序,不幸的是,它还有几个(大)应用程序区域,这些区域只对一小部分用户可用,以避免大多数用户不会使用内容来膨胀初始 JS 下载需要,我在FlowRouter.route({action})级别使用动态导入。

对于离线模式(除了处理数据等),我使用服务工作者来缓存 JS、CSS 和 HTML。不幸的是,因为动态导入在 websocket 上工作,所以无法在加载它们时缓存它们。

幸运的是,用户必须通知服务器他们打算离线工作(因此可以下载相关的数据和文件、视频等),这提供了在客户端离线之前加载这些动态导入的机会。

我有哪些缓存动态导入的选项?到目前为止我所考虑的:

  1. 编写一个简单的包,其中包含静态加载的所有动态导入,并{lazy: true}package.js.

    • 需要大量的重组
    • lazy: true意味着该包实际上不能通过 URL 获得,它似乎只能作为动态导入本身使用。
  2. 编写一个服务器端“提取器”,它将包名称作为参数并从文件系统提供内容

    • 我不知道客户端包是如何存储在服务器上的,也不知道服务器是否可以访问这些文件。
  3. 使用browserify(或类似的东西)手动生成一个静态js包,/public当客户端声明他们打算离线时可以下载该包

    • 它非常手动,并且很容易错过对动态导入的更改。

以前有没有人尝试过,我知道流星并没有正式支持服务人员,但据我所知,除了动态导入之外,它与他们相处得很好

0 投票
2 回答
1506 浏览

webpack - 如何检测何时加载了动态模块及其所有依赖项?

Webpack 支持符合ECMAScript动态导入提议的import()语法。此语法使用 Promise 异步加载模块。

问题是,一旦特定模块被加载,承诺就会被解决,而无需等待模块的依赖项加载(可以是任何类型的资产,包括 JS 和 CSS)。

示例代码:

我的模块.js

如何检测模块和所有相关资产的加载时间?类似于onload异步资产的事件?

0 投票
1 回答
6855 浏览

reactjs - 从 react-loadable 命名 webpack 块

我已经在我的项目中成功添加了 react-loadable 库以启用代码拆分,我发现的唯一问题是 webpack 生成的块没有命名,它们被赋予整数名称。

我的 react-loadable 使用代码是

我添加了注释来告诉 webpack 3 我希望这个块被命名为 app. 我做错了什么吗?

0 投票
1 回答
1803 浏览

javascript - 未捆绑文件的动态导入

我有一个与 Webpack 捆绑在一起的 React 项目。

我有一个组件,我希望它动态地呈现组件。在我的例子中,组件的路径来自于 props。

此外,这些组件没有捆绑在我的项目 .js 文件中;它们是外部 React 组件/库。

我试过动态 ES6 导入:

这不起作用,因为导入需要静态路由。

然后我尝试了require:

这不起作用,因为(我假设)Webpack 试图在主包中找到它。

这甚至可能吗?

更新:看起来这可以工作(cardType 是 'index.js' - 一个 React 组件):

Webpack 创建一个不同的包(块),包括 index.js 的代码及其所有依赖项。

但这并不能真正解决我原来的问题。

编辑 2:从上面的导入实际上忽略了最后一个 var,Webpack 将 /lib 中的每个文件都分成了块。