用Backbone和requirejs写了个论坛,Nodejs环境下大家来吐槽

用Backbone和requirejs写了个论坛,Nodejs环境下大家来吐槽

闲来无事,用Backbone结合requirejs做前端写了个论坛,大家吐槽去~~

15 回复

用Backbone和RequireJS写了个论坛,Node.js环境下大家来吐槽

闲来无事,用Backbone结合RequireJS做前端写了个论坛,大家可以去吐槽一下。这个论坛的实现主要分为两部分:前端和后端。前端使用了Backbone.js和RequireJS来构建模块化的应用,而后端则使用Node.js和Express来处理HTTP请求。

前端代码

首先,我们来看一下前端代码。这里使用了RequireJS来管理模块,并且通过Backbone.js来组织前端逻辑。

配置文件 config.js
require.config({
    baseUrl: '/',
    paths: {
        'jquery': 'lib/jquery',
        'underscore': 'lib/underscore',
        'backbone': 'lib/backbone',
        'text': 'lib/text',
        'app': 'app'
    },
    shim: {
        'underscore': { exports: '_' },
        'backbone': { deps: ['underscore', 'jquery'], exports: 'Backbone' }
    }
});
主入口文件 main.js
require(['jquery', 'underscore', 'backbone', 'app/router'], function($, _, Backbone, Router) {
    var router = new Router();
    Backbone.history.start();
});
路由器 app/router.js
define(['backbone', 'app/views/home'], function(Backbone, HomeView) {
    return Backbone.Router.extend({
        routes: {
            '': 'home'
        },

        home: function() {
            var view = new HomeView();
            view.render();
        }
    });
});
主视图 app/views/home.js
define(['jquery', 'underscore', 'backbone', 'text!templates/home.html'], function($, _, Backbone, template) {
    return Backbone.View.extend({
        el: '#content',
        template: _.template(template),

        initialize: function() {
            this.listenTo(this.collection, 'add', this.render);
        },

        render: function() {
            this.$el.html(this.template({ posts: this.collection.toJSON() }));
            return this;
        }
    });
});
模板文件 app/templates/home.html
<div class="post">
    <% _.each(posts, function(post) { %>
        <div class="post-item">
            <h2><%= post.title %></h2>
            <p><%= post.content %></p>
        </div>
    <% }); %>
</div>

后端代码

接下来,我们看一下后端代码。这里使用了Node.js和Express框架来处理HTTP请求。

入口文件 server.js
const express = require('express');
const app = express();

app.use(express.static('public'));

app.get('/api/posts', (req, res) => {
    const posts = [
        { title: '第一个帖子', content: '这是第一个帖子的内容' },
        { title: '第二个帖子', content: '这是第二个帖子的内容' }
    ];
    res.json(posts);
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

总结

这个简单的论坛应用展示了如何使用Backbone.js和RequireJS来构建一个模块化的前端应用,并且通过Node.js和Express来提供数据接口。你可以根据需要扩展这个应用,比如添加用户认证、评论功能等。

访问地址:http://backbonejs.duapp.com

希望你们喜欢这个小项目,并在上面尽情吐槽!


不传到github吗?正在学node和Backbone。

没做XSS过滤,建议使用这个模块:https://github.com/leizongmin/js-xss

python 开发的~?

我试了下,给markdown加上safe_mode之后,有些html标签就不显示了,不知道cnodejs是怎么显示的,我试试 <script>alert(‘很厉害的样子’);</script>

已经上传到github了啊

我也来分享一个Backbone和Seajs做的小东东: http://cnodejs.org/topic/5380b713c3ee0b5820f7f20b

你的首页文章出来好慢

度娘催楼主缴费了吗?

我也在学习backbone果断mark之,前面我尝试了用async加载JS以及页面模板等,还没用过require

这种小把戏,当然过滤了

这个代码是去年就上传了 还是BAE2上的,所以不用缴费。

度娘对老用户都不收费么?

哥们,写个readme啊,说说都用了啥,哪个版本啊,

当然可以!以下是如何使用Backbone.js和RequireJS在Node.js环境下构建一个简单的论坛应用。我们将通过一个简单的例子来展示如何设置项目结构、模块化管理以及基本的前后端交互。

1. 初始化项目

首先,我们需要初始化一个新的Node.js项目,并安装必要的依赖包:

mkdir forum-app
cd forum-app
npm init -y
npm install express body-parser ejs

2. 设置服务器

创建一个server.js文件,用于启动服务器:

// server.js
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

app.set('view engine', 'ejs');
app.get('/', (req, res) => {
    res.render('index');
});

app.listen(3000, () => console.log('Server started on http://localhost:3000'));

3. 使用EJS模板引擎

在项目根目录下创建一个views文件夹,并添加一个index.ejs文件:

<!-- views/index.ejs -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>论坛</title>
</head>
<body>
    <div id="content"></div>
    <script data-main="js/main" src="lib/require.js"></script>
</body>
</html>

4. 使用RequireJS和Backbone

public文件夹中创建js文件夹,然后在其中创建main.js文件:

// public/js/main.js
require.config({
    paths: {
        'jquery': 'https://code.jquery.com/jquery-3.6.0.min',
        'underscore': 'https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min',
        'backbone': 'https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.0/backbone-min'
    }
});

require(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
    var Post = Backbone.Model.extend({});
    var PostsView = Backbone.View.extend({
        el: '#content',
        initialize: function() {
            this.collection = new Backbone.Collection();
            this.collection.fetch().then(() => this.render());
        },
        render: function() {
            this.$el.html(this.collection.map(post => `<p>${post.get('title')}</p>`).join(''));
        }
    });

    $(document).ready(function() {
        var postsView = new PostsView();
    });
});

5. API路由

server.js中添加一个API路由来提供数据:

app.get('/api/posts', (req, res) => {
    const posts = [
        { title: 'Post 1' },
        { title: 'Post 2' },
        // 更多帖子...
    ];
    res.json(posts);
});

这样,我们就创建了一个简单的论坛应用,用户可以在客户端看到从服务器获取的数据。你可以根据需求扩展更多的功能,如添加新帖子、评论等。

回到顶部