摘要:寫在前面為了解決后端人員不足又招聘不到的問題,決定用前后端分離的方式寫項目,于是嘗試用跟搭建一個項目。首先,看一下我搭建的前端跟項目的結構。
寫在前面
為了解決后端人員不足又招聘不到的問題,決定用前后端分離的方式寫項目,于是嘗試用django-rest-framework跟Vue.js搭建一個項目。
基礎搭建項目的參考了一下教程使用Django + Vue.js快速而優雅地構建前后端分離項目
整體來說教程寫的還可以,但是實際搭完之后,其實還是有很多問題需要解決。
首先,看一下我搭建的前端跟項目的結構。
結構 web pack.config.jsvar path = require("path") var webpack = require("webpack") module.exports = { entry:{ build:"./src/main.js", index:"./src/index.js", foot:"./src/foot.js", login:"./src/login.js", about_us:"./src/about_us.js", sideList:"./src/sideList.js", }, output: { path: path.resolve(__dirname, "./dist/"), publicPath: "/dist/", filename: "static/js/[name].js" }, module: { rules: [ { test: /.vue$/, loader: "vue-loader", options: { loaders: { // Since sass-loader (weirdly) has SCSS as its default parse mode, we map // the "scss" and "sass" values for the lang attribute to the right configs here. // other preprocessors should work out of the box, no loader config like this necessary. "scss": "vue-style-loader!css-loader!sass-loader", "sass": "vue-style-loader!css-loader!sass-loader?indentedSyntax" } // other vue-loader options go here } }, { test:/.css$/, loader:"style-loader!css-loader" }, { test: /.js$/, loader: "babel-loader", exclude: /node_modules/ }, { test: /.(png|jpg|gif|svg)$/, loader: "file-loader", options: { name: "static/img/[name].[ext]?[hash]" } } ] }, resolve: { alias: { "vue$": "vue/dist/vue.esm.js" } }, devServer: { historyApiFallback: true, noInfo: true }, performance: { hints: false }, devtool: "#eval-source-map" } if (process.env.NODE_ENV === "production") { module.exports.devtool = "#source-map" // http://vue-loader.vuejs.org/en/workflow/production.html module.exports.plugins = (module.exports.plugins || []).concat([ new webpack.DefinePlugin({ "process.env": { NODE_ENV: ""production"" } }), new webpack.optimize.UglifyJsPlugin({ sourceMap: true, compress: { warnings: false } }), new webpack.LoaderOptionsPlugin({ minimize: true }) ]) }
我把Django的static文件直接指向了dist.
在settings.py中設置。
STATIC_URL = "/fontend/dist/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, "../fontend/dist/static")
Vue實現單頁面渲染,把單個頁面的css都壓縮到js中,index.html頁面代碼直接引用一個js即可。
有個問題需要解決,就是這種目錄結構下,vue的根目錄是從dist開始,索引不到fontend,
而django是從fontend開始,所以上述路徑/dist/static/js/index.js,vue是可以訪問到的,而django訪問不到,想讓django訪問到,就在訪問靜態文件時改寫靜態文件的路徑。在urls.py中加入這樣一行
from django.views.static import serve from mainsys import settings url(r"^(?P.*)$", serve, {"document_root": settings.DOCUMENT_ROOT, "show_indexes": True}),
其中settings.py設置。
DOCUMENT_ROOT = os.path.join(BASE_DIR, "fontend/")
先寫這么多,以后遇到坑的時候再更新。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45445.html
摘要:寫在前面為了解決后端人員不足又招聘不到的問題,決定用前后端分離的方式寫項目,于是嘗試用跟搭建一個項目。首先,看一下我搭建的前端跟項目的結構。 寫在前面 為了解決后端人員不足又招聘不到的問題,決定用前后端分離的方式寫項目,于是嘗試用django-rest-framework跟Vue.js搭建一個項目。 基礎搭建項目的參考了一下教程使用Django + Vue.js快速而優雅地構建前后端分...
閱讀 2967·2021-11-25 09:43
閱讀 3633·2021-08-31 09:41
閱讀 1237·2019-08-30 15:56
閱讀 2119·2019-08-30 15:55
閱讀 2993·2019-08-30 13:48
閱讀 2816·2019-08-29 15:15
閱讀 984·2019-08-29 15:14
閱讀 2657·2019-08-28 18:26