使用Durandal为单页应用程序创建BreezeJS EntityManager实例的最佳实践是什么?
是否应该在所有页面之间共享一个实体管理器实例,或者每个页面应该有一个实例?
有关实施的任何细节都表示赞赏.
我有一个使用DurandalJS构建的应用程序,具有以下内容:
我的身份验证代码是从shell.js调用的.
我需要我的shell能够监视intro.js和home.js文件中的一些属性.具体来说 - 如果用户选择其中一个视图中带有复选框的项目,我需要使用shell.js来更改菜单项.理想情况下,这可以通过允许shell"观察"视图模型中的内容来完成.这可能吗?
我正在尝试使用Durandal应用程序设置,我开始时只使用两个视图进行了非常简单的配置.
发生的事情是当我调用router.navigateTo('#/ welcome')或router.navigateTo('#/ primaryapplicants')时,视图不会改变.但是,地址栏中的URL会发生变化,如果我重新加载页面,我会看到我尝试导航到的视图.
我究竟做错了什么?
这是一段视频,展示了我正在经历的行为.我在视频中引用的代码包含在下面.
require.config({
paths: { "text": "durandal/amd/text" }
});
define(function (require) {
var system = require('durandal/system'),
app = require('durandal/app'),
router = require('durandal/plugins/router'),
viewLocator = require('durandal/viewLocator'),
logger = require('services/logger');
system.debug(true);
app.start().then(function () {
// route will use conventions for modules
// assuming viewmodels/views folder structure
router.useConvention();
// When finding a module, replace the viewmodel string
// with view to find it partner view.
// [viewmodel]s/sessions --> [view]s/sessions.html
// Otherwise you can pass paths for …Run Code Online (Sandbox Code Playgroud) 在我的基于HotTowel的项目中,我使用Durandal 1.1.1进行路由.
我有一个登录路由,如果用户没有登录,我想激活它.
我的路线配置如下:
var routes = [ {
url: 'login',
moduleId: 'viewmodels/login',
name: 'Login',
visible: true,
caption: 'Login'
},{
url: 'moduledetail/:id',
moduleId: 'viewmodels/moduledetail',
name: 'ModuleDetail',
visible: true,
caption: 'ModuleDetail'
}
Run Code Online (Sandbox Code Playgroud)
我想如果用户想去,#/moduledetail/1并且尚未经过身份验证,浏览器会导航到路由,#/login/moduledetail/1因此在成功登录路由后返回到#/moduledetail/1.
一个可能的解决方案是将一个navigateTo在canActivate的moduledetail,如:
function canActivate()
{
if (!loggedIn)
router.navigateTo(`#/login/moduledetail/1`)
return false;
}
Run Code Online (Sandbox Code Playgroud)
但导航到另一页canActivate似乎是如此愚蠢.
是否有任何方法告诉Durandal在路由时,在这种情况下使用这条路线?
single-page-application durandal hottowel durandal-navigation
我刚刚开始学习AngularJS并使用AngularJS,Spring和Hibernate构建一个项目,这个项目是一个SPA(单页面应用程序),我使用REST与服务器交互.现在我有另一个项目要处理并使用AngularJS会使这个项目的开发比较容易,但是这个项目不是SPA,使用REST也可以使它易于管理,我想知道我们切换到AngularJS的要求,只是为了制作SPA吗?
好吧,所以我一直在写Backbone.js应用程序超过一年了,我喜欢框架模型.我已经学会了如何避免所有的陷阱等等,但是作为一个单页应用程序开发人员,我还有一个领域仍然很弱:如何搜索面向公众的应用程序.
我正在开发一个博客项目,我想到的最简单的解决方案是让所有博客条目的服务器生成列表显示为/blog页面加载时呈现的部分的链接,并确保在访问/blog/:idURL时,服务器将博客内容加载到页面上的第一个div中,该div将设置为display:none.
我的问题是,这对于一个好的搜索引擎索引是否足够?SEO仍然是我作为开发人员最薄弱的技能.是否有技术可以确保搜索引擎首先抓取此内容,并且能够将该内容用于更复杂的索引?
另外,有没有办法将页面上生成的应用内容列入黑名单,因为我知道Google一直在测试抓取的JavaScript应用?在我看来,如果没有某种标准的浏览器级别事件可以在整页渲染时或者在加载所有数据之后触发,那么它就无法在这个级别完成.
无论如何,这更像是一个我知道的模糊票,但如果我们在这里得到一些好的答案,它最终可能对未来的人有用.
Angular 2 - 如何使关键字和描述的index.html文件标题和元标记动态化.
我正在使用带有角度2的打字稿.
我的标签示例:
<!DOCTYPE html>
<html lang="en" prefix="og: http://ogp.me/ns#" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>title needs to be dynamic</title>
<base href="/"></base>
<meta charset="UTF-8">
<meta name="fragment" content="!"/>
<meta name="description" content="description needs to be dynamic"/>
<meta name="keywords" content="keywords needs to be dynamic" />
Run Code Online (Sandbox Code Playgroud)
这是我的路线:
{ path: '/', component: Home, as: 'Home', data:{title: 'Welcome Home'}},
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它没有用:
<title>{{title}}</title>
Run Code Online (Sandbox Code Playgroud) 我使用Microsoft模板创建了几个SPA项目.
dotnet new --install Microsoft.AspNetCore.SpaTemplates::*
Run Code Online (Sandbox Code Playgroud)
然后运行:
dotnet new angular
Run Code Online (Sandbox Code Playgroud)
要么
dotnet new aurelia
Run Code Online (Sandbox Code Playgroud)
这两个项目生成的文件名称webpack.config.vendor.js如下所示(来自angular sample):
const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const merge = require('webpack-merge');
module.exports = (env) => {
const extractCSS = new ExtractTextPlugin('vendor.css');
const isDevBuild = !(env && env.prod);
const sharedConfig = {
stats: { modules: false },
resolve: { extensions: [ '.js' ] },
module: {
rules: [
{ test: /\.(png|woff|woff2|eot|ttf|svg)(\?|$)/, use: 'url-loader?limit=100000' }
]
},
entry: {
vendor: …Run Code Online (Sandbox Code Playgroud) 有人试图用它来申请
dotnet new --install Microsoft.AspNetCore.SpaTemplates::*
dotnet new angular
Run Code Online (Sandbox Code Playgroud)
这个命令使用bootstrap 3创建一个angular + .net核心项目.我正在尝试使用bootstrap 4.
我试图将bootstrap 4 css放在vendor.css(bootstrap 3所在的位置)但没有成功.
有谁知道如何将bootstrap 4放在bootstrap 3上?最终使用javascript插件jquery和popper.
这将非常有帮助,谢谢!
我有一个有角度的4 SPA应用程序,我使用docker进行制作.到目前为止看起来很好 通过终端我去/dist文件夹,从那里我让docker指向dist以下命令的内容:
docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html nginx:alpine
我打电话:localhost:9090在浏览器上,可以访问该应用程序.问题是当我再次重新加载页面和/或作为特定路由,然后我得到404 Not Found和nginx版本,例如nginx/1.13.5.
我一直在搜索并发现这个问题:在Nginx上找不到404错误,但遗憾的是没有解决方案.
如何解决这个问题并避免404错误?这是我必须编辑的配置步骤吗?
durandal ×4
angular ×3
javascript ×3
angularjs ×2
asp.net-core ×2
bootstrap-4 ×1
breeze ×1
hottowel ×1
knockout.js ×1
nginx ×1
seo ×1
url-routing ×1
webpack ×1