我正在读一本关于编写JavaScript框架的书,并找到了这段代码片段.但我不明白它是如何工作的,特别是bind.bind用法?有人有线索吗?
var bind = Function.prototype.bind;
var apply = bind.bind(bind.apply);
var fn = apply([].concat);
var a = [1, 2, 3], b = [4, [5, 6], 7];
fn(a, b);
//output [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud) 我认为只有在某个资源被导入或需要某个资源并且资源与这样的加载器匹配时才会调用加载器.
但是在下面的代码中,没有html文件被导入到任何地方,但由于html中的下划线模板内容,仍然需要html-loader来进行编译.
所以我有以下问题:
插件是否使用加载程序的输出?但输出只是一个字符串,它怎么会有所作为?
//webpack.config.js
const webpack = require('webpack');
const path = require('path');
const htmlPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
a: './a.js'
},
output: {
filename: '[name].[chunkhash].js',
chunkFilename: '[name].[chunkhash].js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.html$/,
loader: "html-loader"
}
]
},
plugins: [
new htmlPlugin({
template:path.resolve(__dirname,'index.html')
})
]
};
//index.html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script id="item-template" type="text/template">
<label><%= title %></label>
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)我发现许多博客(包括 lint-staged 文档)介绍了一种使用 husky+ lint-staged 的方法,作为 package.json 中定义的以下代码:
{
"scripts": {
"precommit": "lint-staged"
},
"lint-staged": {
"src/**/*.js": ["prettier --write","eslint --fix", "git add"]
}
}
Run Code Online (Sandbox Code Playgroud)
由于存在“prettier”和“eslint --fix”都无法修复的错误,我们如何防止这种用法造成的错误提交?
我分别创建了一个基于express的后端(在文件夹A中)和一个相关的基于react的前端项目(在文件夹B中)。现在我把B放在A里面有以下好处:
我不再需要将文件从字体端构建复制到服务器项目,因为A/server.js可以直接提供文件A/B/build。
无需担心跨源请求错误。
它们看起来像一个项目,并且在 GitHub 中更易于管理。但是我可以从文件夹 A 运行npm run buildjs,而它实际上npm run build在文件夹 B 中运行吗?我想这与 npm run-script 的使用有很大关系。
比方说
commit A^={toBeRemoved.txt, toBeModified.txt,old.txt}
commit A={file1.txt(new added),added.txt(new added),toBeModified.txt(modified since A^),old.txt}
commit originally pointed by Branch B={file1.txt,toBeModified.txt,old.txt}
Run Code Online (Sandbox Code Playgroud)
然后
git checkout B
git cherry-pick A
Run Code Online (Sandbox Code Playgroud)
将在分支 B 的顶端生成一个新的提交 A',这样
A'={file1.txt(diff and merged,conflict possible),toBeModified.txt(diff and merged,conflict possible),added.txt,old.txt(from branch B)}
Run Code Online (Sandbox Code Playgroud)
我不确定手册中“应用提交引入的更改”的含义。我认为这里A对A^引入的更改仅参考+ added.txt和-toBeRemoved.txt。至于文件toBeModified.txt,无论从 A^ 以后是否真的被修改过,总是有可能像file1.txt一样引起冲突,可能需要手动合并。换句话说,最终的 A' 是什么样子不仅取决于 A 和 A^,还取决于 A' 将落地的分支B。我想确定我的理解是否正确,因为这部分让我困惑了很长时间。