Ila*_*mer 12 javascript java tomcat maven gruntjs
我有一个基于maven的项目,我需要将其部署到本地tomcat服务器(用于开发).
现在,在前端,我想要一个咕噜咕噜的构建(jslint,concat,karma,sass等).
我看了一些问题,但我无法弄清楚如何使它全部工作
这可能适用于您,也可能不适合您,因为我不确定您是否希望所有内容都完全集成.
此方法将允许您运行Tomcat服务器,允许您通过自动重新加载(以及您可能想要运行的任何其他任务)进行前端更改,并且不会在Tomcat中重新编译/重新加载.我使用它并进行前端开发非常快.
总结的想法:
使用任何方式运行Java应用程序(maven tomcat插件,Eclipse Servers选项卡等).在标准端口(例如8080)上运行它.我假设你知道怎么做.
使用grunt,grunt-contrib-watch,grunt-contrib-connect,grunt-contrib-proxy.在不同于tomcat的端口上运行grunt-contrib-connect,例如9000.设置grunt-contrib-proxy将来自grunt-contrib-connect服务器的请求代理到不同端口上的后端tomcat,必要时重写URL.
为了帮助您入门,这里是Gruntfile.js的相关部分(修改到您的应用程序):
// Watches files for changes and runs tasks based on the changed files
watch: {
js: {
files: ['<%= my.app %>/scripts/**/*.js'],
tasks: [],
options: {
livereload: '<%= connect.options.livereload %>'
}
},
livereload: {
options: {
livereload: '<%= connect.options.livereload %>'
},
files: [
'<%= my.app %>/**/*.html',
'<%= my.app %>/.tmp/styles/**/*.css',
'<%= my.app %>/images/**/*.{png,jpg,jpeg,gif,webp,svg}'
]
}
},
// The actual grunt server settings
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost',
livereload: 35729
},
proxies: [{
context: '/rest',
host: 'localhost',
port: 8080,
https: false,
changeOrigin: true,
rewrite: {
'^/rest': '/myapp/rest'
}
}],
livereload: {
options: {
open: true,
middleware: function(connect) {
return [
require('grunt-connect-proxy/lib/utils').proxyRequest,
connect.static('src/main/webapp/.tmp'),
connect.static('src/main/webapp/'),
];
}
}
},
Run Code Online (Sandbox Code Playgroud)
要开发,你启动你的后端Tomcat应用程序,然后使用控制台,运行:grunt serve.进行所需的任何前端更改,它们将自动重新加载,任何相关的grunt任务将随每次更改一起运行.您的应用程序将正常工作,因为所有后端请求都代理到Tomcat,前端请求使用grunt-contrib-connect处理.
对于此类项目,我的策略是通过重新调整后端来将客户端与后端分开。通过这样做,我可以使用任何类型的客户端作为我的后端服务。以上就是概要,下面我们来深入了解细节。
后端:假设您正在为您的项目使用 Spring MVC。您可以先设计模型和控制器部分。您的 url 映射应该采用用户友好的结构,例如:
/user/update/{userId}
Run Code Online (Sandbox Code Playgroud)
您拥有用于不同操作的服务,这意味着您的控制器不依赖于您的视图。您不返回 a ModelAndView,而是从服务返回 json 数据。您可以从 Web 客户端、移动客户端或桌面客户端使用此服务。我想,您可能会有诸如“限制部分怎么样?”之类的问题。在此模型中,您不会使用 java 会话,您还将提供身份验证作为服务,如Oauth或Oauth2。简而言之,您有登录表单,用户输入用户名和密码。当单击“登录”按钮时,用户名和密码发送到后端并从数据库进行评估。您生成一个具有过期时间的唯一令牌。从现在开始,您将使用此令牌执行您的请求。您还可以定义一个拦截器来检查每个请求的令牌有效性。您可以使用本地存储将此令牌保留在客户端中。最后,您拥有身份验证机制和服务。这些不依赖于客户端应用程序。
前端:假设您有一个具有大量用户交互的客户端应用程序。您可以将AngularJS用于 Web 应用程序,并使用Twitter Bootstrap进行主题化。例如,在文章列表页面中,您可以在页面加载时对后端服务进行ajax调用。您可以使用 AngularJS 轻松做到这一点。此外,您还可以将返回的数据绑定到页面模型。好的,您已经有了客户端应用程序,它能够向您的服务发出请求以获取特定数据。例如AngularJS项目,你可以参考这里。您可以使用yeoman创建 AngularJS 项目。你还可以使用 grunt 来缩小、丑化你的静态文件,你也可以看看这里。
概括:
| 归档时间: |
|
| 查看次数: |
4675 次 |
| 最近记录: |