javascript - 如何在 webpack 中处理编译后的 Vue 组件?
问题描述
gettext
我想为 Vue.js创建一个类似于 Django 的“宏” 。
如何设置加载器,以便获得已编译(解析)的 Vue.js 组件的template
标签?它可以是 JS 或一些 AST。
例子:
// webpack.config.js
module.exports = {
module: {
rules: [{
test: /.vue$/,
loader: 'vue-loader'
}, {
test: /.vue?template/ // just an example
loader: myLoader
}]
}
}
// my-loader.js
module.exports = function (source) {
// here source is either JS or AST representation
return source
}
解决方案
简单的配置可以如下所示:
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.vue$/,
use: [
'vue-loader',
'my-loader', // our custom loader
]
}
]
}
}
// my-loader.js
const { createDefaultCompiler } = require('@vue/component-compiler')
module.exports = function(source) {
const compiler = createDefaultCompiler()
const descriptor = compiler.compileToDescriptor('filename.vue', source)
const { template } = descriptor;
console.log(template.ast) // AST of the component's template tag
}
推荐阅读
- android - How to access Firebase key node all children when parent node is also a key in hierarchy
- functional-programming - OCaml 中 `with type` 和仿函数之间的区别
- python - 类型字符 Django Factory 的值太长
- java - 在 Java 中使用 settings.xml
- python-3.x - 将坐标 ID 映射到坐标值
- python - Ubuntu 19.10 Linode 上的 Flask Web 应用程序,IOError:[Errno 13] 权限被拒绝:'/app.log'
- r - 更改列表中列表的名称
- javascript - 基于另一个选择的jQuery多次更改选择
- python - python的ecdsa库有问题
- mysql - 如何解决这个 MySQL 和 Django 连接的问题