关于搜索引擎和SEO,我看到AngularJS应用程序存在两个问题:
1)自定义标签会发生什么?搜索引擎会忽略这些标签中的所有内容吗?即假设我有
<custom>
<h1>Hey, this title is important</h1>
</custom>
Run Code Online (Sandbox Code Playgroud)
<h1>即使是在自定义标签内,也会被编入索引?
2)有没有办法避免索引{{}}的搜索引擎字面上绑定?即
<h2>{{title}}</h2>
Run Code Online (Sandbox Code Playgroud)
我知道我可以做点什么
<h2 ng-bind="title"></h2>
Run Code Online (Sandbox Code Playgroud)
但是,如果我想让爬虫"看到"标题怎么办?服务器端渲染是唯一的解决方案吗?
我见过几个AngularJS项目模板:官方网站上的种子项目,Yeoman的生成和AngularFun.
是否有任何其他(非)固定的模板我应该看一下,或者您建议的可扩展AngularJS项目的任何相关模式?
通过可扩展我的意思
我正在尝试基于http://mbostock.github.com/d3/talk/20111116/bar-hierarchy.html做一个图表,唯一的区别是我想使用x-的对数刻度轴.
这是我的小提琴:http://jsfiddle.net/JhDVC/5/
如您所见,x轴在第4行定义:
x = d3.scale.linear().range([0, w]),
Run Code Online (Sandbox Code Playgroud)
如果我改变它
x = d3.scale.log().range([0, w]),
Run Code Online (Sandbox Code Playgroud)
然后它不起作用(没有渲染),抛出这些错误消息:
Error: Invalid value for <rect> attribute width="NaN"
Run Code Online (Sandbox Code Playgroud)
更改域设置
x.domain([0, root.value]).nice();
Run Code Online (Sandbox Code Playgroud)
至
x.domain([1, root.value]).nice();
Run Code Online (Sandbox Code Playgroud)
向我显示z轴(名称)但仍然没有条形或值.
我有以下配置:
$routeProvider
.when('/cars', { templateUrl: 'app/cars/index.html', controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { templateUrl: 'app/bikes/index.html', controller: 'BikesCtrl', reloadOnSearch: false });
Run Code Online (Sandbox Code Playgroud)
在我的根index.html的某个地方有一个:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-view></div>
Run Code Online (Sandbox Code Playgroud)
现在,我希望在DOM中同时加载和生成两个视图,并根据路由/ URL显示其中一个.
类似下面的内容(不是实际的工作代码,只是为了给你一个想法).
app.js:
$routeProvider
.when('/cars', { controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { controller: 'BikesCtrl', reloadOnSearch: false });
Run Code Online (Sandbox Code Playgroud)
root index.html:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-include="'app/cars/index.html'" ng-show="carsVisible"></div>
<div ng-include="'app/bikes/index.html'" ng-show="bikesVisible"></div>
Run Code Online (Sandbox Code Playgroud)
更新:我知道ng-view类型可以做到这一点,但差异,如果微妙,存在.我希望每个视图的html生成一次并始终保留在DOM中.
我想宣传node-postgres的pg.connect方法以及connection.query回调中提供的内部方法.
我可以.promisify后者,但我需要手动实现第一个(如果我在这里遗漏了一些东西,请解释).
问题是,我不确定这段代码是否正确或是否应该改进?代码正在运行,我只是想知道我是否正在使用Bluebird.
// aliases
var asPromise = Promise.promisify;
// save reference to original method
var connect = pg.connect.bind(pg);
// promisify method
pg.connect = function (data) {
var deferred = Promise.defer();
connect(data, function promisify(err, connection, release) {
if (err) return deferred.reject(err);
// promisify query factory
connection.query = asPromise(connection.query, connection);
// resolve promised connection
deferred.resolve([connection,release]);
});
return deferred.promise;
};
Run Code Online (Sandbox Code Playgroud) 鉴于下表:
CREATE TABLE channel1m (
ts TIMESTAMP WITHOUT TIME ZONE NOT NULL,
itemId BIGINT,
value BIGINT
)
Run Code Online (Sandbox Code Playgroud)
在其中一排可被插入每分钟,每的itemId,如下所示:
ts itemId value
2012-12-03 15:29:00 100 1
2012-12-03 15:30:00 100 2
2012-12-03 15:30:00 101 0
2012-12-03 15:32:00 100 1
2012-12-03 15:32:00 101 1
Run Code Online (Sandbox Code Playgroud)
我找不到一种方法(不创建额外的表)来编写填充时间间隔的查询(例如,对于itemId 101为15:29:00,对于两个项目为15:31:00),返回NULL值.
预期的结果集将是:
ts itemId value
2012-12-03 15:29:00 100 1
2012-12-03 15:29:00 101 NULL
2012-12-03 15:30:00 100 2
2012-12-03 15:30:00 101 0
2012-12-03 15:31:00 100 NULL
2012-12-03 15:31:00 101 NULL
2012-12-03 15:32:00 100 …Run Code Online (Sandbox Code Playgroud) 我知道范围观察者和过滤器都在摘要循环中重复执行.但是以下对我来说有点不清楚:
他们执行相同数量的周期吗?
两者都是由同样的情况引发的吗?