📜  MEAN.JS教程(1)

📅  最后修改于: 2023-12-03 14:44:14.735000             🧑  作者: Mango

MEAN.JS教程

MEAN.JS是一个用于构建Web应用程序的开源全栈JavaScript框架。它运用了四个主要的JavaScript技术:MongoDB、Express、AngularJS和Node.js。在本教程中,我们将深入探讨如何使用MEAN.JS建立自己的Web应用程序。

安装MEAN.JS

在开始构建自己的应用程序之前,首先需要安装MEAN.JS到本地开发环境中。我们建议使用Node.js的npm包管理器来安装MEAN.JS,具体步骤如下:

  1. 安装Node.js:https://nodejs.org/
  2. 打开终端或命令行工具,输入以下命令来安装MEAN.JS:
npm install -g yo
npm install -g generator-meanjs

完成以上步骤后,我们便可以在本地电脑中使用MEAN.JS了。

创建一个新的MEAN.JS应用程序

接下来,我们将通过命令行工具创建一个新的MEAN.JS应用程序。

  1. 创建一个新的文件夹,例如“myapp”,并进入该文件夹:
mkdir myapp
cd myapp
  1. 在该文件夹中运行以下命令来初始化应用程序:
yo meanjs
  1. 根据提示输入应用程序名称、作者等信息。在完成所有信息的输入后,应用程序将自动初始化并安装所需的依赖项。

至此,我们已成功创建了一个新的MEAN.JS应用程序。

MEAN.JS中的模块

MEAN.JS基于模块的架构,每个模块由一个文件夹组成,可以包含多个子模块。在创建新的功能时,我们可以使用MEAN.JS提供的命令行工具,在模块中生成对应的文件和代码片段。例如,以下命令将在"articles"模块中生成一个新的控制器:

yo meanjs:controller articles
MEAN.JS中的路由

在MEAN.JS中,路由由两部分组成:URL和控制器。我们可以在路由中定义URL,并将其映射到对应的控制器。例如,以下代码片段演示了如何定义一个路由:

app.route('/api/articles')
    .get(articles.list)
    .post(articles.create);

app.route('/api/articles/:articleId')
    .get(articles.read)
    .put(articles.update)
    .delete(articles.delete);

以上代码定义了两个路由:/api/articles和/api/articles/:articleId。当用户访问这两个URL时,该路由将调用对应的控制器中的方法(例如articles.list)。

MEAN.JS中的数据存储

MEAN.JS使用MongoDB作为默认的数据存储。我们可以使用Mongoose来操作MongoDB数据库。以下代码演示了如何在MEAN.JS中定义模型和使用模型:

var ArticleSchema = new Schema({
    title: {
        type: String,
        default: '',
        required: 'Please fill Article title',
        trim: true
    },
    content: {
        type: String,
        default: '',
        required: 'Please fill Article content',
        trim: true
    },
    created: {
        type: Date,
        default: Date.now
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

mongoose.model('Article', ArticleSchema);

var articles = require('../controllers/articles.server.controller');

module.exports = function(app) {
    app.route('/api/articles')
        .get(articles.list)
        .post(users.requiresLogin, articles.create);

    app.route('/api/articles/:articleId')
        .get(articles.read)
        .put(users.requiresLogin, articles.update)
        .delete(users.requiresLogin, articles.delete);

    app.param('articleId', articles.articleByID);
};

以上代码定义了一个Article模型和一个Article控制器。Article模型定义了文章的数据结构,而Article控制器包含了所有对应的方法。在控制器中,通过mongoose.model方法将Article模型注册到Mongoose中。此后,我们可以通过Article模型来对MongoDB数据库进行操作。

MEAN.JS的前端

在MEAN.JS中,前端使用AngularJS来构建。我们可以在客户端使用AngularJS模块来处理数据和逻辑。以下代码演示了如何定义AngularJS模块和控制器:

angular.module('articles').controller('ArticlesController', ['$scope', '$stateParams', '$location', 'Authentication', 'Articles',
    function($scope, $stateParams, $location, Authentication, Articles) {
        $scope.authentication = Authentication;

        $scope.create = function() {
            var article = new Articles({
                title: this.title,
                content: this.content
            });
            article.$save(function(response) {
                $location.path('articles/' + response._id);
            }, function(errorResponse) {
                $scope.error = errorResponse.data.message;
            });
        };
    }
]);

以上代码定义了一个名为Articles的AngularJS模块,以及一个ArticlesController控制器。ArticlesController控制器包含了一个create方法,该方法将文章的标题和内容保存到数据库中。控制器通过AngularJS服务Articles来操作MongoDB数据库。在HTML模板中,我们可以使用AngularJS指令来绑定控制器中的方法和模型。

总结

本教程介绍了MEAN.JS的基础知识以及相关概念。通过学习MEAN.JS,我们可以快速构建自己的Web应用程序,并深入了解JavaScript全栈开发技术。