我想为我的JavaScript项目创建一个干净的结构.该项目由一个Node.js服务器和两个单独的Angular.js前端组成,具有不同的用途.为了构建前端,我使用每个自定义的grunt构建.构建产生每个项目一个HTML文件和两个缩小/丑化的CSS和JavaScript文件.然后,每个前端在节点服务器的单独最小版本上运行(仅提供静态文件).
到目前为止,这么清楚.现在的目标是使插件模块能够添加到三个核心项目中的每一个.模块应该扩展其中一个项目的JavaScript.这意味着例如在一个前端的情况下将额外的角度模块添加到角度配置.我已经知道在哪里以及如何将角度模块代码添加到核心应用程序中.
现在的问题是:如何在多个项目上创建合理的构建过程,这也依赖于插件模块?我想出了两个解决方案.
你会如何解决这个问题?
我想在webpack中要求一个要求列表.一旦我用变量或常量替换require函数的字符串参数,它就不能再注入需求了.
这是一个完美的例子:
const angular = require('angular');
Run Code Online (Sandbox Code Playgroud)
但是一旦我将其更改为以下内容,它就不再起作用了:
const angularString = 'angular';
const angular = require(angularString);
Run Code Online (Sandbox Code Playgroud)
我的目标是拥有一个静态的依赖项列表并逐个注入它们,如下所示:
const angularDependencies = [
'angular-socket-io',
'angular-ui-router'
];
for(var i = 0; i < angularDependencies.length; i++) {
require(angularDependencies[i]);
}
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息:
WARNING in ./app/app.js
Critical dependencies:
14:1-14 the request of a dependency is an expression
@ ./app/app.js 14:1-14
WARNING in ./app ^\.\/.*$
Module not found: Error: a dependency to an entry point is not allowed
@ ./app ^\.\/.*$
WARNING in ./app ^\.\/.*$
Module not found: Error: …Run Code Online (Sandbox Code Playgroud) 我如何编写一个 CSS 规则来选择所有div.box不在其中的内容.container?
以下代码片段不起作用div,.container因为div.container.
div:not(.container) .box {
background:red;
}Run Code Online (Sandbox Code Playgroud)
<div class="box">box</div> <!-- select this -->
<div class="container">
<div>txt</div>
<div><div class="box">box</div></div>
</div>
<div class="box">box</div> <!-- select this -->Run Code Online (Sandbox Code Playgroud)
我有一个仪表板视图,它需要来自整个数据库的表的小数据集.我优化了数据库查询(例如删除了子查询).现在有大约20个查询一个接一个地执行,它们从数据库中获取不同的数据集.大多数HQL查询都包含GROUP BY和JOIN子句.使用Spring REST接口,结果将返回到前端.
如何优化自定义查询的执行?我最初的想法是并行运行数据库查询.但是我该如何实现呢?在做了一些研究之后,我找到了注释@Async,它可以并行运行方法.但这是否适用于Hibernate方法?是否总是为@QueryJpaRepository中注释的每个方法创建一个新的数据库会话?运行数据库查询是否会对总体执行时间产生影响?
另一种并行运行数据库调用的方法是将Dashboard调用拆分为几个单独的Ajax调用(每个关注点都有自己的Ajax调用).我不想这样做,因为每次打开仪表板(或者例如更改日期范围)时,都会进行另外20次Ajax调用以获取新数据.同样的问题仍然存在:并行运行SQL查询是否会影响数据库的执行时间?
我目前还没有向数据库添加其他索引.这将是下一件事,我肯定会这样做.但是,我对并行运行查询的性能影响以及如何使用Spring以编程方式实现此问题感兴趣.
我的项目最初是由jHipster(Spring Boot,MariaDB,AngularJS等)生成的.
我vue-resource用来从服务器获取数据。用户需要具有JWT令牌才能获取正确的数据。如果令牌无效或已过期,则返回401状态。如果用户尝试访问禁止页面,则返回403。
我想捕获这些错误并适当地(全局)处理它们。这意味着,呼叫应完全由拦截器处理(如果为401、403)。
如何防止浏览器消息“未捕获(承诺)”并创建一些全局错误处理?我不想在每个电话上都有本地错误处理程序。
我有以下拦截器:
Vue.http.interceptors.push(function (request, next) {
request.headers.set('Authorization', Auth.getAuthHeader());
next(function (response) {
if (response.status === 401 || response.status === 403) {
console.log('You are not logged in or do not have the rights to access this site.');
}
});
});
Run Code Online (Sandbox Code Playgroud)
Vue中的以下调用methods:
methods: {
user: function () {
this.$http.get('http://localhost:8080/auth/user').then(function (response) {
console.log(response);
});
}
}
Run Code Online (Sandbox Code Playgroud) 将Swisscom CloudFoundry解决方案与Spring Boot应用程序一起使用时,Strict-Transport-Security会在HTTPS响应中添加两个标头.我已经研究过这个问题,并发现CloudFoundry解决方案添加了几个标题.默认情况下,Spring Boot也已添加Strict-Transport-Security标头(在安全站点上),这会导致两个不同的HSTS标头.
我想在我的应用程序中配置我的应用程序的标头.有没有办法禁用Swisscom CloudFoundry解决方案的自动标题添加?
如果没有,有没有办法告诉Swisscom Cloud覆盖现有的Strict-Transport-Security标题而不是将其附加到标题列表?
部署Swisscom Cloud的Spring Boot应用程序的HTTP响应包含以下两个标头:
Strict-Transport-Security:max-age=31536000 ; includeSubDomains
Strict-Transport-Security:max-age=15768000; includeSubDomains
Run Code Online (Sandbox Code Playgroud) http-headers cloud-foundry hsts swisscomdev strict-transport-security
因此,我在资产文件夹中有一个本地存储的名为“its_me.pdf”的文件。
我正在尝试使用 HTML 标签引用 PDF 的下载
<a href="../assets/its_me.pdf" download>PDF</a>
Run Code Online (Sandbox Code Playgroud)
这是一个真正的 PDF 文件,如果我手动双击该文件,我可以看到它显示并且它是真实的。但是,当我转到我的应用程序:http://localhost:4200/its_me(它所在的路由名称)并单击该链接时,我收到“失败 - 无文件”错误。

当使用容器的 vscode 远程扩展将存储库克隆到卷中时,会下载 Alpine linuxdocker.io以引导该卷(最初)。这仅用于创建卷。然后用于我的应用程序的图像是我在 Dockerfile 中指定的正确图像(不是 alpine)。
如何设置自定义引导映像来引导卷?这样做的主要原因是安全方面:只应使用内部图像。
编辑:似乎bootstrap.Dockerfile可以在扩展的文件夹(<user-folder>/.vscode/extensions/ms-vscode-remote.remote-containers-<version>/scripts/volumeBootstrap.Dockerfile)中手动更改,但这不是一个合适的解决方案。如何在例如devcontainer.json或其他地方指定该文件路径?
将新版本的Java/Spring Boot软件部署到Swisscom Developer Cloud后,在CloudFoundry上运行,启动突然失败,出现以下错误:OutOfMemoryError: Compressed class space.因此,我们决定部署该软件的先前版本,该版本之前正在运行:发生了同样的错误.我们没有从Java7切换到Java8,也没有更改任何配置.这导致了一个问题:这真的是我们这边或者服务器端的错误吗?
然后,我们尝试MaxMetaspaceSize通过将变量设置JBP_CONFIG_OPEN_JDK_JRE为以下行之一来增加:
[jre: {version: 1.8.0_+}, memory_calculator: {memory_sizes: {metaspace: 128m}}]
{memory_calculator: {memory_sizes: {metaspace: 128m}}}
{memory_sizes: {metaspace: 128m}}
Run Code Online (Sandbox Code Playgroud)
应用程序始终警告,该值memory_sizes无效.这个YAML变量的正确格式是什么?
[ConfigurationUtils] WARN User config value for 'memory_sizes' is not valid, existing property not present
Run Code Online (Sandbox Code Playgroud)
然后,我们在Swisscom Developer Console上删除了Java应用程序和数据库服务,并重新创建了它.它没有效果,发生了同样的错误.
最后,你知道为什么突然发生这个错误,即使是几分钟前运行良好的版本?
编辑:
这是明显的([database-service-name]和[application-name]被替换):
---
path: .
instances: 1
buildpack: https://github.com/cloudfoundry/java-buildpack
services:
- [database-service-name]
applications:
- name: [application-name]
domain: scapp.io
host: [application-name]
memory: 1024M
disk_quota: 1024M
env:
SPRING_PROFILES_ACTIVE: …Run Code Online (Sandbox Code Playgroud) javascript ×3
swisscomdev ×2
vue.js ×2
architecture ×1
build ×1
buildpack ×1
css ×1
font-awesome ×1
gruntjs ×1
hibernate ×1
hql ×1
hsts ×1
html ×1
http-headers ×1
interceptor ×1
java ×1
promise ×1
require ×1
spring ×1
spring-data ×1
vue-resource ×1
webpack ×1