安装 Django-webpack-loader
Django-webpack-loader 中文的翻译为:Django-Webpack-加载器。
-
- django: 2.2
-
- webpack: 4.30.0
- django-webpack-loader: 0.6.0
当需要在Django中使用webpack时,推荐使用django-webpack-loader。
GitHub – owais/django-webpack-loader:透明地将webpack与django结合使用
之前已经写过关于django-webpack-loader的文章。
– 使用Django + Webpack来运行Vue
– 使用webpack在Django中使用bootstrap4
这次用最新信息简洁地说一下。
安装
创建一个名为“PROJECTNAME”的项目文件夹,并移动到该文件夹内。然后执行npm init。
mkdir PROJECT_NAME
cd PROJECT_NAME
npm init -y
使用npm安装所需的模块。
npm install --save-dev webpack webpack-cli webpack-bundle-tracker
webpack-bundle-tracker会将webpack的捆绑信息输出到名为webpack-stats.json的文件中。django-webpack-loader使用这个webpack-stats.json。
GitHub – owais/webpack-bundle-tracker: 将有关webpack编译过程的一些统计数据输出到文件中
创建webpack配置文件webpack.config.js
touch webpack.config.js
编辑。
var path = require("path")
var webpack = require('webpack')
var BundleTracker = require('webpack-bundle-tracker')
module.exports = {
mode: 'development',
context: __dirname,
entry: {
main: './assets/js/main.js' // エントリ名とエントリポイント
},
output: {
path: path.resolve('./assets/webpack_bundles/'), // 出力
filename: "[name]-[hash].js",
},
plugins: [
new BundleTracker({filename: './webpack-stats.json'}),
],
}
如上所述,将输入文件夹设置为/assets/js/,将输出文件夹设置为/assets/webpack_bundles/。请提前创建相应的文件夹。
mkdir -p assets/js
mkdir assets/webpack_bundles
安装django-webpack-loader。
如果还没有安装Django的话
pip install django
创建Django项目,取名为「djangoproject」。
django-admin.py startproject djangoproject
pip install django-webpack-loader
...
INSTALLED_APPS = (
...
'webpack_loader',
)
...
STATICFILES_DIRS = (
os.path.join(BASE_DIR, '../assets'),
)
...
WEBPACK_LOADER = {
'DEFAULT': {
'CACHE': not DEBUG,
'BUNDLE_DIR_NAME': 'webpack_bundles/', # must end with slash
'STATS_FILE': os.path.join(BASE_DIR, '../webpack-stats.json'),
'POLL_INTERVAL': 0.1,
'TIMEOUT': None,
'IGNORE': [r'.+\.hot-update.js', r'.+\.map']
}
}
用法示例:Vue.js
我要尝试使用Vue。
npm install --save-dev vue
创建入口点
touch assets/js/main.js
编辑。
window.Vue = require('vue');
在写上述时需要加载仅运行时构建。
Vue不是一个构造函数
在webpack.config.js中进行补充。
module.exports = {
...
resolve: {
alias: {
vue: 'vue/dist/vue.js'
}
},
...
}
编译。
./node_modules/.bin/webpack --config webpack.config.js
在assets/bundles文件夹中创建了一个捆绑文件。
试着在Django中调用捆绑包。假设创建一个名为Vue的应用程序。
mkdir -p djangoproject/vue/templates/vue
touch djangoproject/vue/templates/vue/index.html
INSTALLED_APPS = (
...
'vue',
)
...
from django.views.generic.base import TemplateView
...
urlpatterns = [
...
path('', TemplateView.as_view(template_name='vue/index.html')),
...
]
你好,Vue!
{% load render_bundle from webpack_loader %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example</title>
</head>
<body>
{% verbatim %}
<div id="app">
{{ message }}
</div>
{% endverbatim %}
{% render_bundle 'main' %}
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
</script>
</body>
</html>
render_bundle是用来加载模板所需的script和link。为了防止{{ message }}被django渲染,进行了verbatim操作。
python djangoproject/manage.py runserver
请用浏览器打开 http://127.0.0.1:8000/。