小编Die*_*erg的帖子

Prerender.io没有缓存页面

我用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

你把网址变成了这个:

http://www.example.com/#!/user/123

出于某种原因,如果我尝试这个,它仍然会添加#!标志添加了URL的结尾,所以如果我请求我的应用程序的URL像谷歌我得到这个:

http://www.my-website.com/?_escaped_fragment_=#!/home

所以它不会替换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'的路线不工作.

seo node.js prerender express angularjs

6
推荐指数
1
解决办法
2969
查看次数

AngularJS最佳实践 - 风格指南

我正在尝试使用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

6
推荐指数
1
解决办法
3027
查看次数

CombineLatest第一个事件没有开火

我想知道我的应用程序何时脱机并重新联机.我注册了以下活动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: ....

javascript rxjs rxjs5

4
推荐指数
1
解决办法
2284
查看次数

Select 方法返回类似 @{Name= 的字符串

我想使用“select”从管道中选择项目,但它返回原始数据,例如:@{Name=MyMachine}

@{Name=MyMachine}如果我想重新启动,因为没有名为的机器,这将没有帮助@{Name=MyMachine}

有一个“MyMachine”,但脚本不只返回名称。

@{Name="}选择单个对象时如何去掉“ ”?

powershell

3
推荐指数
1
解决办法
8937
查看次数

如果 robocopy 使用 powershell 成功,则重置 lastexitcode

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.

powershell gitlab-ci

3
推荐指数
1
解决办法
675
查看次数

主机node.js在线投影

我有一个小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之间的连接!已经有了一些东西,但它有点慢.

映入眼帘,

沃特

javascript sockets node.js express pug

1
推荐指数
1
解决办法
2044
查看次数