我用AngularJS和expressJS后端制作了一个应用程序.现在我想让它可抓取,我发现prerender.io.我认为我已经完成了一切正确的bur因为某些原因我在prerenderer仪表板中没有看到任何统计信息.
在我的app.configure函数中,我包含了如下标记:
app.use(require('prerender-node').set('prerenderToken', 'my-token'));
Run Code Online (Sandbox Code Playgroud)
在我的HTML中,我已经包含了元片段标记:
<meta name="fragment" content="!">
Run Code Online (Sandbox Code Playgroud)
我做的最后一件事是告诉AngularJS使用hashprefix:
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,如果我参考文档,我得不到正确的结果.下面你可以看到它应该做什么:
Google会向您的服务器发送请求,如下所示:
http://www.example.com/?_escaped_fragment_=/user/123
你把网址变成了这个:
出于某种原因,如果我尝试这个,它仍然会添加#!标志添加了URL的结尾,所以如果我请求我的应用程序的URL像谷歌我得到这个:
所以它不会替换url中的哈希值.我认为这是我的问题的原因.
提前致谢!
编辑 - 如果我例如添加一个额外的路线,那么它的工作原理:
app.get('/', function (req, res) {
res.sendfile('./public/index.html');
});
app.get('/test', function (req, res) {
res.sendfile('./public/index.html');
});
Run Code Online (Sandbox Code Playgroud)
在'/'不上班路线'/test'的路线不工作.
我正在尝试使用google-styleguide网站上定义的一些角度最佳做法:https://google-styleguide.googlecode.com/svn/trunk/angularjs-google-style.html
但目前我正在努力解决一些问题.在我使用这个样式指南之前,我有一个$scope变量可用于$watch对变量进行操作.
app.controller('myController',['$scope', function($scope) {
$scope.$watch('myVariable', function(val) {
alert("I'm changed");
});
}]);
Run Code Online (Sandbox Code Playgroud)
现在用我的新方法我不知道如何处理这个问题?我还应该注射$scope吗?因为我$scope不使用时不需要注射$watch.
function myController($scope) {
var vm = this;
vm.myVariable = "aVariable";
vm.$watch('vm.myVariable', function(val) {
// error because $watch is undefined
});
//$scope.$watch - works
}
app.controller('myController',['$scope', myController]);
Run Code Online (Sandbox Code Playgroud)
风格指南还建议使用原型.但是,如果我必须注入服务怎么办?在原型中使用服务的最佳方法是什么?
function myController(MyService) {
var vm = this;
vm.myService = MyService;
}
myController.prototype.callService = function() {
var vm = this;
vm.myService.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
它是否正确?或者我错过了什么,是否有一个地方可以找到关于这种角度编程风格的更多信息?
在我看来,感觉更像是自然的javascript,我想用这种方式来组织我的AngularJS应用程序.
提前致谢
更新
对于"服务"问题,我想到的事情如下:
function MyBaseController(AService, …Run Code Online (Sandbox Code Playgroud) javascript code-organization prototypal-inheritance angularjs
我想知道我的应用程序何时脱机并重新联机.我注册了以下活动rxjs:
const online = Rx.Observable.fromEvent(window, 'online');
const offline = Rx.Observable.fromEvent(window, 'offline');
const source = Rx.Observable.combineLatest(online, offline).map(() => navigator.onLine);
source.subscribe(result => {
console.log('I\'m online: ' + (result ? 'jup' : 'nope'));
});
Run Code Online (Sandbox Code Playgroud)
但是,我第一次离线时事件并没有触发,如果我添加常规addEventListener事件,我看到他们被触发正常:
window.addEventListener('online', () => console.log('online triggered'));
window.addEventListener('offline', () => console.log('offline triggered'));
Run Code Online (Sandbox Code Playgroud)
以这个jsbin为例,通过devtools切换你的netwerk,你会看到它第一次不会记录I'm online: ....
我想使用“select”从管道中选择项目,但它返回原始数据,例如:@{Name=MyMachine}
@{Name=MyMachine}如果我想重新启动,因为没有名为的机器,这将没有帮助@{Name=MyMachine}
有一个“MyMachine”,但脚本不只返回名称。
@{Name="}选择单个对象时如何去掉“ ”?
我robocopy在 Gitlab 管道的构建步骤中使用复制文件。管道任务在 powershell 中执行。
的退出状态robocopy导致我的构建步骤失败。我注意到所有低于 8 的状态码都是有效的。意思是我应该重置$lastexitcode为$null如果$lastexitcode是< 8
这是我在我的 powershell 脚本中尝试过的:
robocopy src dest /mir (&{if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }})
Run Code Online (Sandbox Code Playgroud)
这里的问题是该(&{ if...部分是在robocopy.
我有一个小node.js和socket.io项目,我想在我的服务器上在线运行.我使用jade作为我的文件,并使用npm install将其打包完成.所以一切都在我的本地文件夹中.我也可以在本地运行它.
但我想连接我的手机来控制我的浏览器,我无法将手机连接到本地主机.所以我需要在线运行它.
问题是,当我把它放在网上时,我有一个index.jade文件.这个浏览器不会将其识别为网页.所以当我去http://www.woutervdkamp.nl/iphoneconnect/views时,我只得到一个禁止的页面
我的文件夹结构如下:
??? httpdocs
??? iphoneconnect
| ??? node-modules
| ??? express
| ??? jade
| ??? socket.io
??? package.json
??? server.js
??? views
??? index.jade
??? mobile.jade
Run Code Online (Sandbox Code Playgroud)
我需要使用特殊主机吗?或者有人能指出我正确的方向!提前致谢.
我正试图做这样的事情:http: //sportyfinger.lecoqsportif.com/uk-en/connexion
如果有人得到一个很好的教程,那就太好了!我只想知道如何建立iphone和webbrowser之间的连接!已经有了一些东西,但它有点慢.
映入眼帘,
沃特