我正在从https://github.com/moroshko/react-
autosuggest
实现一个示例
重要代码如下:
import React, { Component } from 'react';
import suburbs from 'json!../suburbs.json';
function getSuggestions(input, callback) {
const suggestions = suburbs
.filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
.sort((suburbObj1, suburbObj2) =>
suburbObj1.suburb.toLowerCase().indexOf(lowercasedInput) -
suburbObj2.suburb.toLowerCase().indexOf(lowercasedInput)
)
.slice(0, 7)
.map(suburbObj => suburbObj.suburb);
// 'suggestions' will be an array of strings, e.g.:
// ['Mentone', 'Mill Park', 'Mordialloc']
setTimeout(() => callback(null, suggestions), 300);
}
该示例中的复制粘贴代码(有效)在我的项目中出现错误:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
如果我删除前缀json !:
import suburbs from '../suburbs.json';
这样,我在编译时不会出错(导入已完成)。但是执行时出现错误:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
如果我调试它,我可以看到郊区是一个对象,而不是一个数组,因此未定义过滤器功能。
但是在示例中,注释建议是一个数组。如果我重写这样的建议,那么一切都会起作用:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
所以…什么json!前缀是在导入吗?
为什么不能将其放入代码中?一些babel配置?
首先,您需要安装json-loader
:
npm i json-loader --save-dev
然后,有两种使用方式:
json-loader
每个,import
您可以添加webpack.config
到此行:loaders: [
{ test: /.json$/, loader: ‘json-loader’ },
// other loaders
]
然后json
像这样导入文件
import suburbs from '../suburbs.json';
json-loader
直接在您的中使用import
,如您的示例所示:import suburbs from 'json!../suburbs.json';
注意: 在 webpack 2.*
代替关键字时loaders
需要使用
rules
。,
也默认 webpack 2.*
使用json-loader
- .json文件现在不受json-loader支持。您仍然可以使用它。这不是一个重大变化。
v2.1.0-beta.28
现在我正在浏览我的应用程序,更改此模式的实例: 进入: 其中是我项目根目录下的一个简单文件,有选择地从NPM包中导入我需要的ES6模块: 通过对许多包执行此操作,我能够将捆绑包文件大小减少50%以上。 有没有一个WebPack模块或插件可以自动为任何包做这件事? 如果这个转换(即,只在包中包含显式导入的内容,而不是整个库)递归地应用于整个包树,我打赌我们会看到显著的大小差异。 编辑:正如Swive
本文向大家介绍Python重新加载模块的实现方法,包括了Python重新加载模块的实现方法的使用技巧和注意事项,需要的朋友参考一下 importlib 模块的作用 模块,是一个一个单独的py文件 包,里面包含多个模块(py文件) 动态导入模块,这样就不用写那么多的import代码, 典型的例子: 自动同步服务,每个网站都有一个py文件。主进程里收到同步任务,根据名称来动态导入对应的py文件,这样就
不管是用import还是用from mmmm import *的方式导入模块,当程序运行之后,回头在看那个存储着mmmm.py文件的目录中(关于mmmm.py文件可以看上一讲),多了一个文件: qw@qw-Latitude-E4300:~/Documents/ITArticles/BasicPython/codes$ ls mmm* mmmm.py mmmm.pyc 在这个目录下面,除了原来的
模块加载器指的是coolie.js,在浏览器中使用。 coolie.config() 配置模块加载器的各项参数,详细文档点这里。 coolie.use([moduleId]) 执行模块加载器。其中入口模块 id 可以省略,由 html 里的data-main属性指定,指定入口模块常用于单元测试。 coolie.use('path/to/app.js'); 通常,一个模块加载的配置文件如下: co
模块内的所有代码和数据都有文件作用域,这意味着它们不能被模块外部的代码访问。 要在模块外部共享代码或数据,需要使用export关键字导出。 在后端(服务器端)使用模块是相对简单的,你只需使用import关键字。 然而,Web浏览器没有模块或导入的概念,他们只知道如何加载JavaScript代码。 我们需要一种方法来引入一个javascript模块,以便从其他JavaScript代码开始使用它。 这
本文向大家介绍Angular实现预加载延迟模块的示例,包括了Angular实现预加载延迟模块的示例的使用技巧和注意事项,需要的朋友参考一下 在使用路由延迟加载中,我们介绍了如何使用模块来拆分应用,在访问到这个模块的时候, Angular 加载这个模块。但这需要一点时间。在用户第一次点击的时候,会有一点延迟。 我们可以通过预加载路由来修复这个问题。路由可以在用户与其它部分交互的时候,异步加载延迟的模