标签:back 匿名 登录 can 心态 modules style 菜单 依赖注入
MEAN开发框架的资料非常少。基本的资料还是来自于learn.mean.io站点上的介绍。
于是抱着一种零基础学习的心态,在了解的过程中,通过翻译加上理解将MEAN框架一点点消化而且吸收,一步一步来。慢慢地记录我学习MEAN的点点滴滴。
$ mean user <email> $ mean user <email> --addRole <role>; $ mean user <email> --removeRole <role>;2、MEAN能够列举也能够安装和卸载模块
$ mean list $ mean install <module> $ mean uninstall <module>
4、核心包中有:
system:基本页面、总体页面布局、渲染引擎、静态文件、client到服务端的路由等。
user:提供用户注冊数据库模型以及登录和注冊的相关验证。
access:管理权限以及中间件,它包括了非常多授权方法依赖user包。
theme:有关CSS以及图片和背景资源。
articles:能够看成是博客以及CMS管理内容的一个起点,在client以及服务端它包括了完整的增删改查操作(GRUD)。
5、全部的包都有它们相应的client和服务端部分。client部分在public目录中,当中有:
asset:Javascript代码、CSS以及图片等;
controllers:前端框架Angular的控制器。
config:包括了路由文件。
services:Angular服务(还有directives和filter目录)
views:Angular视图
服务端部分在Server目录中,当中有:
config:配置文件
controllers:Angular控制器
models:数据库Schema模型
routes:REST API路由端
views:基于SWIG的html渲染
6、依赖注入(Dependency Injection)
MEAN的依赖注入可以在你声明你所须要的依赖时自己主动解析系统所拥有的包来为你解析全部的依赖。不论什么注冊过的包,都会在你声明依赖的时候变得可用。
比方说。在某个包的根文件夹下,有app.js文件,这当中包括的注冊方法中。就用到了依赖注入。
这里MyPackage在注冊的时候。依赖了名为Tokens的包。
// Example of registering the tokens package MyPackage.register(function(app, auth, database, Tokens) { // I can make use of the tokens within my module MyPackage.someExampleFunction(‘some parameter‘); // I can override functions MyPackage.someExampleFunction = function(param) { //my custom logic goes here }; });
// Example of adding an angular dependency of the ngDragDrop to the MyPackage.angularDependencies([‘ngDragDrop‘]);
Javascript脚本、CSS和图片能被聚合到全局的聚合文件里。默认全部Javascript脚本会包裹在匿名的函数中。除非{global:true}没有放置在被包括的域中。
<pre name="code" class="javascript">//Adding jquery to the mean project MyPackage.aggregateAsset(‘js‘,‘jquery.min.js‘); //Adding another library - global by default is false MyPackage.aggregateAsset(‘js‘,‘jquery.min.js‘, {global:true}); //Adding some css to the mean project MyPackage.aggregateAsset(‘css‘,‘default.css‘);没有放在assets目录中的Javascript文件会被聚合和注入到mean项目中。
假设不像这么做,那么应当放置在public/assets/js目录中。
聚合操作支持控制聚合代码所放的位置。通常须要加入一个weight和group变量来确定它是否在正确的位置。
MyPackage.aggregateAsset(‘js‘,‘first.js‘,{global:true, weight: -4, group: ‘header‘});
能够通过settings这个函数来获取和保存持久信息。比方说:
MyPackage.settings({‘someSetting‘:‘some value‘}, function (err, settings) { // You will receive the settings object on success }); // Another save settings example this time with no callback // This writes over the last settings. MyPackage.settings({‘anotherSettings‘:‘some value‘}); // Get settings. Retrieves latest saved settings MyPackage.settings(function (err, settings) { // You now have the settings object });当存入信息的时候,第一个參数是JSON格式信息,第二个參数是回调函数。
回调函数用来推断信息是否存入,第二个參数是可选的。当读取信息的时候,仅仅须要一个參数就可以。这个參数就是回调函数。
10、Express路由
全部到服务端控制器的路由都是由Express控制的。包系统将会沿着包的对象一直传递到路由文件。
一般是/server/routes/myPackages.js。
默认的话routes函数有其他的一些參数:
MyPackage.routes(app, auth, database);
以下是位于server/routes/myPackage.js的样例:
// The Package is past automatically as first parameter module.exports = function(MyPackage, app, auth, database) { // example route app.get(‘/myPackage/example/anyone‘, function (req,res,next) { res.send(‘Anyone can access this‘); }); };
$stateProvider .state(‘myPackage example page‘, { url: ‘/myPackage/example‘, templateUrl: ‘myPackage/views/index.html‘ });
以下是介绍怎样在app.js中为菜单加入链接的。
//We are adding a link to the main menu for all authenticated users MyPackage.menus.add({ title: "myPackage example page", link: "myPackage example page", roles: ["authenticated"], menu: "main" });
视图存在于包中的server/views目录中。而且以.html作为结尾。
以下是一个简单渲染html的样例。
app.get(‘/myPackage/example/render‘, function (req,res,next) { MyPackage.render(‘index‘, {packageName:‘myPackage‘}, function (err, html) { //Rendering a view from the Package server/views res.send(html); }); });
以下是一个覆盖默认系统布局而不是使用在包内的本地布局的样例:
MyPackage.register(function(system, app) { app.set(‘views‘, __dirname + ‘/server/views‘); // ...
angular.module(‘mean.mycustompackage‘, [‘mean.system‘]) .config([‘$viewPathProvider‘, function($viewPathProvider) { $viewPathProvider.override(‘system/views/index.html‘, ‘mycustompackage/views/myhomepage.html‘); }]);
16、创建自己的包
$ mean package <packageName>
$ mean uninstall myPackage
$ mean register # register to the mean network (see below) $ cd <packages/custom/pkgName> $ mean publish
标签:back 匿名 登录 can 心态 modules style 菜单 依赖注入
原文地址:http://www.cnblogs.com/cynchanpin/p/6929057.html