java webapp中的javascript预处理程序

时间:2016-03-18 12:56:20

标签: javascript java node.js maven gulp

如何构建完整堆栈开发项目,以便在/ webapp中使用gulp / grunt / webpack工具处理js - 在爆炸性战争中。

我知道我可以让maven / gradle添加一个步骤来执行一些“npm的事情”,但这是一个完整的版本。我也会这样,但我需要即时重新加载功能进行开发。

我希望能够保存一个js文件,让一个观察者拿起它,处理它并将它扔回我爆炸的战争中,这样它a)不会污染我的/ src / main / webapp / b)我希望它与我的java webapp在同一根上下文中共存(有我的jsp并且也吃它)。

我考虑过的一件事是将我的进程js输出到某些/ src / main / webapp / do_not_checkin_folder并在该目录上执行等效的.gitignore。接下来是完整的gradle / maven构建,它将重写index.html中的路径,删除对do_not_checkin_folder的任何提及,并缩短从/ src / main / webapp开始的路径。称之为生产模式。

有人可以建议采用不同的方法。什么对你的项目有用?

1 个答案:

答案 0 :(得分:1)

我有一台运行Express的Node服务器代理了我的Java Web服务器的大多数请求,但js请求除外,它使用webpack热中间件来提供服务。

Webpack配置为使用内容src / main / js和webpack-hot-middleware生成单个js页面。

因此,在开发过程中,您将导航到Node Express服务器。在生产中,静态js文件由Java Web服务器提供。

这是我的Node.js for Node:

const PROXY_TARGET = 'http://localhost:9501';
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const config = require('./webpack.config-hot-middleware');
const express = require('express');
const proxy = require( 'http-proxy' );
const proxyServer = proxy.createProxyServer( );

proxyServer.on('error', function(err, req, res) {
    console.log('Proxy error: ' + err);
    res.writeHead(500, {
        'Content-Type': 'text/plain'
    });
    res.end('Proxy request to ' + PROXY_TARGET + ' failed. Please make sure your Java server is running!');
});

const app = new require('express')();
const port = 3000;

const compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }));
app.use(webpackHotMiddleware(compiler));
app.use('/', function(req, res) {
    proxyServer.web(req, res, {
        target: PROXY_TARGET
    });
});

app.listen(port, function(error) {
    if (error) {
        console.error(error);
    } else {
        console.info('==> Listening on port %s.);
    }
});