servletでvue-router historyモード&フロントエンド構成レコードを使用
10775 ワード
ディレクトリ構造
index.jsp
web.xml
ピット/ソリューション
リソース使用
フロントエンド
package.json
.eslintrc.json
.babelrc
webpack.config.js
- dist // webpack
| - bundle.js
- // ...woff,ttf,svg
- static //
- WEB-INF
- lib
- web.xml
- index.jsp //
index.jsp
"utf-8" %>
<html>
<head>
<title>title>
<meta charset="UTF-8">
head>
<body>
<script src="./dist/bundle.js">script>
body>
html>
web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<error-page>
<error-code>404error-code>
<location>/index.jsplocation>
error-page>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>/dist/*url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>/static/*url-pattern>
servlet-mapping>
web-app>
ピット/ソリューション
リソース使用
/
./
からの は のアドレスで まり、127.0.0.1:8080/foo/bar
にアクセスすると の は127.0.0.1:8080/foo/dist/bundle.js
を してファイルが つからず、 のリソースは
/
に され、 の はルートディレクトリを として され、つまり127.0.0.1/
から まり、どの でも127.0.0.1:8080/dist/bundle.js
に する.フロントエンド
package.json
{
"name": "shop",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"lint": "eslint **/*.js",
"lint-html": "eslint **/*.js -f html -o ./reports/lint-results.html",
"lint-fix": "eslint --fix **/*.js",
"build": "webpack",
"buildp": "webpack -p"
},
"author": "",
"license": "ISC",
"dependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.0",
"bootstrap": "^3.3.7",
"css-loader": "^0.28.7",
"eslint": "^4.7.1",
"eslint-config-airbnb-base": "^12.0.0",
"eslint-plugin-import": "^2.7.0",
"file-loader": "^0.11.2",
"jquery": "^1.12.4",
"style-loader": "^0.18.2",
"vue": "^2.4.4",
"vue-loader": "^13.0.5",
"vue-router": "^2.7.0",
"vue-template-compiler": "^2.4.4",
"webpack": "^3.6.0"
}
}
.eslintrc.json
{
"extends": "airbnb-base",
"rules": {
"no-console": "off"
}
}
.babelrc
{
"presets": ['env']
}
webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
publicPath: '/dist/',
path: path.resolve(__dirname, '../web/dist'),
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
],
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [
'file-loader',
],
},
{
test: /\.svg$/,
use: [
'file-loader',
],
},
{
test: /\.vue$/,
use: [
'vue-loader',
],
},
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: { presets: ['env'] },
},
],
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
}),
],
resolve: {
alias: {
vue: 'vue/dist/vue.js',
},
},
};