GVKun编程网logo

在运行应用程序中的angularjs – Grails 3.0静态html(在程序运行期间不会进行静态重定位)

10

本文将分享在运行应用程序中的angularjs–Grails3.0静态html的详细内容,并且还将对在程序运行期间不会进行静态重定位进行详尽解释,此外,我们还将为大家带来关于.htaccess的Ang

本文将分享在运行应用程序中的angularjs – Grails 3.0静态html的详细内容,并且还将对在程序运行期间不会进行静态重定位进行详尽解释,此外,我们还将为大家带来关于.htaccess的AngularJS应用程序与HTML5模式的子文件夹、Angularjs localStorage存储cordova应用程序中的设置、angularjs – Angular JS单页应用程序中的神秘内存泄漏、angularjs – angular.bootstrap运行多个角度应用程序的相关知识,希望对你有所帮助。

本文目录一览:

在运行应用程序中的angularjs – Grails 3.0静态html(在程序运行期间不会进行静态重定位)

在运行应用程序中的angularjs – Grails 3.0静态html(在程序运行期间不会进行静态重定位)

之前曾经提到类似的问题,关于grails 2(.3,.4).我觉得很奇怪,我找不到一个办法,因为它似乎是一个标准的用例.

当我运行grails运行应用程序时,我只想提供html页面,包括它们链接的.css和.js(有角度和jQuery的内容).

我想检查我的http呼叫是否在双方正确使用 – 无需部署.war并配置数据库.

afaik grails run-app只是启动一个jetty / tomcat – 这两个都可以显着地提供.html页面.我需要做什么来使grails开发工具部署我的文件?

我需要发出http请求,
所以使用不同的服务器会违反JS-SOP,
而部署.war会大大减缓开发过程

我迄今为止只发现了笨重的jsonp,代理,.war部署解决方案或者解决方案

我尝试将文件放在项目的结构(/ src / main,/ src / main / resources,/ src / main / public,资产文件夹及其子文件夹)中,在每个子目录中创建了Web应用程序目录,Init,domain,conf目录 – 你命名)

将index.html添加到src / main / resources / public

然后将其添加到urlmappings.groovy中:

"/"(redirect:"/index.html")

对于grails> = 3.0.12

Location of static resources

In order to resolve an issue around how POST requests are treated for
REST applications on non-existent resources,static resources located
in src/main/resources/public are Now resolved under the /static/** URI
by default,instead of the base URI /**. If you wish to restore the
prevIoUs behavIoUr add the following configuration:

grails.resources.pattern = ‘/**’

https://github.com/grails/grails-core/releases/tag/v3.0.12

.htaccess的AngularJS应用程序与HTML5模式的子文件夹

.htaccess的AngularJS应用程序与HTML5模式的子文件夹

概述:

我有一个使用$locationProvider.html5Mode(true)的AngularJS应用程序,它是从Apache服务器提供的。 到目前为止,我使用源代码从其他人访问,我只需要redirect到index.html的angularJS的HTML5模式。 所以我有这个为我的/app文件夹的.htaccess文件。

.htaccess:

<IfModule mod_rewrite.c> RewriteEngine on # Don''t rewrite files or directories RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # Rewrite everything else to index.html to allow html5 state links RewriteRule ^ index.html [L] </IfModule>

修改:

Apache .htaccess将index.htmlredirect到root,为什么要使用FollowSymlinks和RewriteBase?

.htaccess,将404错误重写到其他域

RewriteCond和RewriteRule在.htaccess中

使用.htaccess将所有非www都redirect到www和http

htaccess可以读取在Apache中设置的服务器环境variables吗?

然后,我添加了Grunt来缩小应用程序的/dist文件夹中生成的整个解决scheme(所以现在缩小的解决scheme在/ app / dist中)。 我现在想将我的应用程序的整个stream量路由到缩小版本,而不会让用户更改链接。 所以,在实践中,我想将每个来自/ app的调用redirect到/ app / dist。

目录结构现在:

app dist minified versions(css,html,js)

我尝试在/ app的.htaccess中使用这里的一些条件,并移动/ app / dist中的其他.htaccess文件,但没有成功。 我甚至不知道这两者是否可以这样结合。 我知道我可以使用dist文件夹作为/应用程序,但我不会真的想这样做,因为/ app是一个回购,它更容易保持更新。 那么我怎样才能实现这个redirect呢?

此外,作为第二件事情,是否有可能把一个标志不知何故,我让阿尔法用户使用正常(未缩小)的版本更好的debugging?

更新:

我在这里添加了一个示例项目。 我只保留了上面显示的初始.htaccess文件,您可以检查两个版本( /test和/test/dist )是否如上所述工作。 此外,它可能有一些未使用的代码和依赖项,但我只是从我的项目中删除其他部分(不要判断:D)。

为此,我使用了AngularJS 1.4.8的初始configuration,可能会产生一些像这里和这里所述的错误。 随意将AngularJS版本更新到1.5.8(Angular 1的最后一个稳定版本),但同时考虑到Cosmin Ababei的post上的评论。 另外,该项目使用npm来安装grunt(以及其他的grunt扩展),bower for angular和其他一些基本组件,以及用于构build缩小版本的grunt(实际上,它现在只是将资源连接在相同的文件中)。 如果您需要更改依赖项,请不要忘记运行bower install 。 如果你想重新生成dist文件夹,不要忘记运行npm install和grunt build 。

apache HTTP:X-Forwarded-Proto in .htaccess在开发环境中导致redirect循环

用.htaccess中选定的查询string参数重写URL

漂亮的URL与.htaccess

apache .htaccess到Nginx重写规则

.htaccessurl重写和删除%20

我将假定在/dist目录里有index.html ,并且更新的URL指向缩小的资源和正确的<base>标记。 请注意, <base>标记必须指向/dist文件夹 – 只需将/dist附加到您为未压缩的 index.html使用的值,您就可以。

有了这些东西,这里是更新的.htaccess文件:

RewriteEngine On # Don''t rewrite files RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ - [L] # If the ALPHA_USER cookie is set,serve the uncompressed files RewriteCond %{HTTP_COOKIE} ALPHA_USER [NC] RewriteRule ^ index.html [L] # Rewrite everything RewriteRule ^ dist/index.html [L]

你会注意到两件事情:

我已经删除了RewriteCond %{REQUEST_FILENAME} -d因为很可能你不需要为整个目录服务

我添加了ALPHA_USER cookie,将用户重定向到未压缩的文件。 这个cookie可以有你想要的任何价值。

在public_html => / app => .htaccess里面试试这个:

RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ dist/index.html [L]

注意: HTML <base>标签应该指向dist文件夹。 我希望这个解决方案能按照你的期望工作。

总结

以上是小编为你收集整理的.htaccess的AngularJS应用程序与HTML5模式的子文件夹全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Angularjs localStorage存储cordova应用程序中的设置

Angularjs localStorage存储cordova应用程序中的设置

我正在使用AngularJS v1.2.7和Cordova 3.3.0( Android)我需要在手机内存中存储一​​些设置 – 所以当应用程序/设备重新启动时,应用程序仍然可以访问这些存储的数据.

关于这个的任何教程?我找不到任何:(

知道Cordova支持; LocalStorage,Websql(no more maintained),IndexedDB(Opera和Safari的not widely supported).我倾向于使用LocalStorage,但是即使在我重启设备后它仍保留/记住数据?

目前我正在使用答案#12969480 by Richard Szalay.

我建议编写一个自定义插件,并在Objective-C用户默认值中正确存储设置.

LocalStorage不是永久存储,而Websql似乎对存储设置有点过分.

您不必过多参与Objective-C并且有很好的Phonegap / Cordova插件指南:

http://docs.phonegap.com/en/3.3.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

我使用此代码存储“FirstRun”变量来检查应用程序是否是新安装.插件检查应用程序之前是否已运行,并返回1或0,将其解析为整数并计算为true / false.

您可以更新此代码并向“AppChecks”类添加更多方法.我把所有简单的检查和设置存储放在这个类中.

AppChecks.h

#import <Cordova/CDVPlugin.h>

@interface AppChecks : CDVPlugin

- (void) checkFirstRun:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;

@end

AppChecks.m

#import "AppChecks.h"
#import <Cordova/CDVPluginResult.h>

@implementation AppChecks

- (void) checkFirstRun:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options {
Nsstring* callbackId = [arguments objectAtIndex:0];

CDVPluginResult* pluginResult = nil;
Nsstring* javaScript = nil;

@try {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    Nsstring *isFirstRun = @"1";

    if (![defaults objectForKey:@"firstRun"]) {
        [defaults setobject:[NSDate date] forKey:@"firstRun"];
    } else {
        isFirstRun = @"0";
    }

    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsstring:isFirstRun];
    javaScript = [pluginResult toSuccessCallbackString:callbackId];
} @catch (NSException* exception) {
    // Could not get locale
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsstring:[exception reason]];
    javaScript = [pluginResult toErrorCallbackString:callbackId];
}
[self writeJavascript:javaScript];
}
@end

在我的Javascript代码中使用:

cordova.exec(
    function( isFirstRun ) {
        isFirstRun = parseInt( isFirstRun );
        if( isFirstRun ) {
          // do stuff for first run
        }
    },function(err) {
        // handle error from plugin
    },"AppChecks","checkFirstRun",[]
);

angularjs – Angular JS单页应用程序中的神秘内存泄漏

angularjs – Angular JS单页应用程序中的神秘内存泄漏

我非常绝望地来找你 – 现在已经为此工作了两天.

我们有一个使用Angular JS构建的单页面应用程序.我们在HTML5模式下使用$routeProvider来实现SPA路由.功能明智 – 一切都很棒!

我们有一个连接到body元素的全局控制器,标题中有一个控制器用于快速搜索功能,所有其他控制器都作用于路径.控制器之间共享一些数据,如currentUser对象和包含用户所选语言的字符串值的ViewRes对象.

但是,我们注意到Chrome服务为我们的页面占用了太多内存.我使用Chrome Profiles工具查看发生了什么.我禁用了大多数使用复杂指令的代码,只省略了基础知识.内存消耗降低了很多,但显然仍然存在.每当我更改页面时,内存都会增加.

在堆快照中,它显示大多数内存由(闭包)和(数组)占用.分离的DOM树也很大.请注意,这些快照包含我们应用程序的基本元素(页眉,页脚和轻量级内容).如果我包含我们复杂的UI组件,那么内存从14MB跳到50MB到140MB ……等等.显然我们会照顾这些指令,但我担心我们的问题是全局性的,而不仅仅是对指令的错误设计.

当我打开(数组)元素时,我注意到它们中有一堆具有浅的大小和保留的大小6172.跟踪该对象的范围总是导致一些ng指令,如ngShow,ngIf …

从图像中可以看出,树在’cache in function()’中结束.我们使用Angular 1.3.6.

编辑:这个项目还包括jQuery.我们使用的是jQuery 1.8.2,当我切换到1.11.2时,在简单页面(简单的ng-repeats和简单模型)之间切换不再导致内存泄漏(不再有分离的DOM元素).

现在复杂的指令仍然给了我太多的分离元素,所以我现在要处理那些,当我找到原因时我会在这里发布结果.

解决方法

很难说出你的具体问题是什么,但Angular内存泄漏的常见地方包括$interval,$watches和事件处理程序.除非您在控制器拆除时明确删除它,否则这些函数中的每一个都会创建一个未清除的闭包.

$interval特别令人讨厌,因为它会继续运行,直到你关闭浏览器或网页 – 即使用户移动到不同的选项卡或应用程序,它也不会停止运行!

如果在这些闭包中创建对DOM元素的引用,您很快就会开始咀嚼内存,因为从不会释放引用,并且当用户从一个页面移动到另一个页面时,DOM树会分离.

要解决此问题,请确保在控制器(以及指令的控制器或链接函数)中处理$destroy事件,并在使用任何间隔,监视或事件处理程序后明确清理.

您可以通过保持对每个$interval,watch或事件处理程序的引用并在$destroy事件处理程序中将其作为函数调用来完成此操作.

例如:

// eventListener to remove
var eventListener = $scope.$on('eventName',function(){…});

// remove the eventListener when the $destroy event is fired
$scope.$on('$destroy',function(){
    // call the value returned from $scope.$on as a function to remove
    // the event listener
    eventListener();
}

// remove an event listener defined on a DOM node:
var elementEventListener = element.on('eventName',function(){…});

element.on('$destroy',function(){
    elementEventListener();
}

// Stop an interval
var stop = $interval(function(){...});
$scope.$on('$destroy',function(){
    stop();
}


// Finally,unbind a  $watch
var watchFn = $scope.$watch('someValue',function(newVal){…}

$scope.on('$destroy',function(){
     watchFn();
}

最后,永远不要在范围内存储DOM元素! (参见#2 here点的原因).

angularjs – angular.bootstrap运行多个角度应用程序

angularjs – angular.bootstrap运行多个角度应用程序

这不是Twitter Bootstrap问题……

我有一个用例需要加载单独的角度应用程序.

根据几个堆栈溢出问题和this google thread,它是可行的.但是,我无法让它发挥作用.

看文档:

http://docs.angularjs.org/api/angular.bootstrap

看起来你需要提供元素(如何获取元素的句柄?),然后如何将它与配置,控制器等联系起来.这对路由有何影响?似乎一个应用程序使用否则另一个使用否则,第二个将覆盖第一个?

谢谢!

要获取对您的应用程序的引用,您可以执行以下操作:
var first = document.getElementById('firstapp-id');
var second = document.getElementById('secondapp-id');

angular.bootstrap(angular.element(first),['firstapp']);
angular.bootstrap(angular.element(second),['secondapp']);

其中’firstapp’和’secondapp’是模块/应用程序名称,’firstapp-id’和’secondapp-id’是每个应用程序(或您最喜欢的DOM元素)的容器div的id.只需以通常的方式定义您的应用:

var firstapp = angular.module('firstapp',[]);
var secondapp = angular.module('secondapp',[]);

今天关于在运行应用程序中的angularjs – Grails 3.0静态html在程序运行期间不会进行静态重定位的分享就到这里,希望大家有所收获,若想了解更多关于.htaccess的AngularJS应用程序与HTML5模式的子文件夹、Angularjs localStorage存储cordova应用程序中的设置、angularjs – Angular JS单页应用程序中的神秘内存泄漏、angularjs – angular.bootstrap运行多个角度应用程序等相关知识,可以在本站进行查询。

本文标签: