Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular是否需要web服务器才能运行?所以,如果我给浏览器一个本地文件的url,Angular会工作吗?_Angularjs - Fatal编程技术网

Angularjs Angular是否需要web服务器才能运行?所以,如果我给浏览器一个本地文件的url,Angular会工作吗?

Angularjs Angular是否需要web服务器才能运行?所以,如果我给浏览器一个本地文件的url,Angular会工作吗?,angularjs,Angularjs,我的意思是,我读到Angular允许使用模型数据,这样就不需要连接RESTFul API。我可以想到一个用例,用户体验设计师只需查看化妆品,而无需连接到web服务器。我还可以想到其他用例 所以,我给浏览器一个本地文件的url,比如C:\temp\index.html,js文件要么在C:\temp,要么在C:\temp\js 实际上,我试过了,这里是一个应用程序文件(我知道应该分开) 我的便条 拯救 清楚的 剩余字符数: //在单独的文件中,但粘贴用于演示目的 var-app=angula

我的意思是,我读到Angular允许使用模型数据,这样就不需要连接RESTFul API。我可以想到一个用例,用户体验设计师只需查看化妆品,而无需连接到web服务器。我还可以想到其他用例

所以,我给浏览器一个本地文件的url,比如C:\temp\index.html,js文件要么在C:\temp,要么在C:\temp\js

实际上,我试过了,这里是一个应用程序文件(我知道应该分开)


我的便条

拯救 清楚的

剩余字符数:

//在单独的文件中,但粘贴用于演示目的 var-app=angular.module(“myNoteApp”,[]); //在单独的文件中,但粘贴用于演示目的 app.controller(“myNoteCtrl”,函数($scope){ $scope.message=“”; $scope.left=function(){return 100-$scope.message.length;}; $scope.clear=function(){$scope.message=”“;}; $scope.save=function(){alert(“注意保存:+$scope.message”);}; });

结果是,它在Chrome和Firefox中工作没有问题,即最初会阻止内容,但可以允许它运行。

您不能仅通过本地计算机上的文件路径访问angular应用程序,因为您将获得跨源域错误


解决方案是安装。这允许您在您的计算机本地创建一个http服务器,并允许您访问Angular应用程序,就像出于开发和测试目的而在线托管一样。

因此,我这样做的方式是创建一个临时服务,只需加载它,而不是从url/文件加载它

例如:

//tempUser.js
angular.module("app").constant("tempUser", {
    firstname : "Joe",
    lastname : "Smith"
});

//userService.js
angular.module("app").factory("userService", function ($q, tempUser) {
    return {
        load : load
    };

    function load(id) {
        //TODO: finish impl
        return $q.when(tempUser);
    }
});
这样,控制器仍然可以像从web服务加载一样工作

angular.module("app").controller("UserDetailCtrl", function (userService) {
    userService.load().then(function (user) {
        $scope.user = user;
    });
});

如果只需要在div中使用类似
{{mymessage}}
的表达式来显示数据,则不需要web服务器

但是,如果您需要在
ngview
中加载
模板
html文件,则需要一个web服务器,否则它将抱怨以下错误

请求无法加载文件。跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源

如果学习angularjs路由需要laoding模板,我发现一个
web服务器
exe
易于使用。到目前为止,它满足了我学习AngularJS的要求

参考资料


  • 是的,您可以运行本地文件,但如果您需要服务器上的数据,浏览器应该阻止它,这取决于您运行的浏览器的版本和类型

    以下是PhoneCat教程应用程序下的官方Angularjs教程说明:

    Angular应用程序纯粹是客户端代码,可以直接从文件系统在web浏览器中打开它们, 最好从HTTP web服务器为它们提供服务。特别是 出于安全原因,大多数现代浏览器都不允许使用JavaScript 如果页面直接从文件加载,则发出服务器请求 系统


    正如其他人所说,最好将其正确地用作http。但是,还有其他解决办法

    一些编辑器,如(在文件中单击右上角的闪电),可以将代码正确地提供给浏览器。对于其他人来说,可能有插件可以做到这一点

    更新:我下面的建议对AngularJS 1非常有效,但仅供参考对AngularJS 2不够。也看到

    此外,如果你在Chrome上,你可以,这意味着你可以在一条捷径上的路径的.exe部分后面添加一些东西;选择,如果你愿意。具体来说,您希望:

    --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt
    

    这使得它在尝试访问来自不同来源的文件时不会抛出错误。这一次有一次,但我无法让它工作。请注意,这不是默认设置的原因是有安全方面的原因,所以可能不要把它放在你一直用来冲浪的主要捷径上…-自担风险使用。

    尝试时会发生什么?是的,只要您不提出任何AJAX请求,它就会工作。好的,我这样做了,并修改了问题。抱歉,我是一个完全的新手。根据我的经验,只要你不需要AJAX请求(路由、ng包含、模板URL等),你实际上可以运行AngularJS应用程序。事实并非如此,但IIRC Firefox不会抛出跨源域错误,因此你的体验可能会有所不同。你能解释一下为什么“你会遇到跨源域错误”吗?那跟角有什么关系?
    --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt