Backbone.js环境搭建 #
一、环境要求 #
1.1 基本要求 #
| 要求 | 说明 |
|---|---|
| Node.js | 推荐v12+(使用npm时) |
| 浏览器 | 现代浏览器或IE11+ |
| 编辑器 | VS Code推荐 |
1.2 依赖说明 #
text
Backbone.js依赖关系
├── Underscore.js(必需,>=1.8.3)
├── jQuery/Zepto(可选,用于DOM操作和AJAX)
└── JSON2(可选,旧浏览器支持)
二、安装方式 #
2.1 直接引入(推荐入门) #
最简单的方式是直接在HTML中引入:
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Backbone.js App</title>
</head>
<body>
<div id="app"></div>
<script src="https://cdn.jsdelivr.net/npm/underscore@1.13.6/underscore-min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/backbone@1.6.0/backbone-min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<script src="app.js"></script>
</body>
</html>
2.2 CDN地址 #
| CDN | 地址 |
|---|---|
| jsDelivr | https://cdn.jsdelivr.net/npm/backbone@1.6.0/backbone-min.js |
| unpkg | https://unpkg.com/backbone@1.6.0/backbone-min.js |
| cdnjs | https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.6.0/backbone-min.js |
2.3 npm安装 #
bash
# 创建项目目录
mkdir my-backbone-app
cd my-backbone-app
# 初始化package.json
npm init -y
# 安装Backbone和依赖
npm install backbone underscore jquery
2.4 yarn安装 #
bash
# 安装Backbone和依赖
yarn add backbone underscore jquery
2.5 Bower安装(已过时) #
bash
# 注意:Bower已不再推荐使用
bower install backbone underscore jquery
三、项目结构 #
3.1 基础项目结构 #
text
my-backbone-app/
├── index.html
├── css/
│ └── style.css
├── js/
│ ├── models/
│ │ └── todo.js
│ ├── collections/
│ │ └── todos.js
│ ├── views/
│ │ └── todo-view.js
│ ├── routers/
│ │ └── router.js
│ └── app.js
└── lib/
├── backbone.js
├── underscore.js
└── jquery.js
3.2 模块化项目结构 #
text
my-backbone-app/
├── package.json
├── src/
│ ├── index.html
│ ├── main.js
│ ├── models/
│ │ └── todo.js
│ ├── collections/
│ │ └── todos.js
│ ├── views/
│ │ └── todo-view.js
│ ├── routers/
│ │ └── router.js
│ ├── templates/
│ │ └── todo.html
│ └── styles/
│ └── main.css
└── dist/
└── bundle.js
四、模块化配置 #
4.1 ES6模块 #
javascript
import $ from 'jquery';
import _ from 'underscore';
import Backbone from 'backbone';
const Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
}
});
export default Todo;
4.2 CommonJS模块 #
javascript
const $ = require('jquery');
const _ = require('underscore');
const Backbone = require('backbone');
const Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
}
});
module.exports = Todo;
4.3 AMD模块(RequireJS) #
javascript
require.config({
paths: {
jquery: 'lib/jquery',
underscore: 'lib/underscore',
backbone: 'lib/backbone'
},
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
define(['backbone'], function(Backbone) {
const Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
}
});
return Todo;
});
五、构建工具配置 #
5.1 Webpack配置 #
安装依赖:
bash
npm install webpack webpack-cli --save-dev
webpack.config.js:
javascript
const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.html$/,
use: ['raw-loader']
}
]
},
externals: {
jquery: 'jQuery'
}
};
5.2 Vite配置 #
安装依赖:
bash
npm install vite --save-dev
vite.config.js:
javascript
import { defineConfig } from 'vite';
export default defineConfig({
build: {
outDir: 'dist',
lib: {
entry: 'src/main.js',
name: 'MyApp'
}
}
});
5.3 Browserify配置 #
安装依赖:
bash
npm install browserify --save-dev
构建命令:
bash
browserify src/main.js -o dist/bundle.js
六、开发环境 #
6.1 开发服务器 #
使用http-server:
bash
# 安装
npm install http-server -g
# 运行
http-server -p 8080
使用live-server:
bash
# 安装
npm install live-server -g
# 运行
live-server
6.2 热重载配置 #
使用Webpack Dev Server:
bash
npm install webpack-dev-server --save-dev
javascript
module.exports = {
devServer: {
contentBase: './dist',
hot: true,
port: 8080
}
};
七、TypeScript支持 #
7.1 安装类型定义 #
bash
npm install @types/backbone @types/underscore @types/jquery --save-dev
7.2 TypeScript配置 #
tsconfig.json:
json
{
"compilerOptions": {
"target": "ES5",
"module": "ES6",
"lib": ["DOM", "ES5", "ES2015"],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "./dist"
},
"include": ["src/**/*"]
}
7.3 TypeScript示例 #
typescript
import $ from 'jquery';
import _ from 'underscore';
import Backbone from 'backbone';
interface TodoAttributes {
title: string;
completed: boolean;
}
const Todo = Backbone.Model.extend<TodoAttributes>({
defaults: {
title: '',
completed: false
},
toggle(): void {
this.set('completed', !this.get('completed'));
}
});
export default Todo;
八、调试工具 #
8.1 Backbone Debugger #
Chrome扩展,用于调试Backbone应用:
text
功能:
- 查看所有Model实例
- 查看所有Collection
- 查看所有View
- 查看Router状态
- 事件监听器追踪
8.2 开发版Backbone #
开发时使用未压缩版本:
html
<script src="backbone.js"></script>
<!-- 而不是 backbone-min.js -->
8.3 调试技巧 #
javascript
Backbone.Model.prototype.set = function(key, value, options) {
console.log('Model.set called:', key, value);
return Backbone.Model.prototype.set.apply(this, arguments);
};
九、验证安装 #
9.1 创建测试文件 #
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Backbone.js Test</title>
</head>
<body>
<div id="app"></div>
<script src="https://cdn.jsdelivr.net/npm/underscore@1.13.6/underscore-min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/backbone@1.6.0/backbone-min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<script>
console.log('Backbone version:', Backbone.VERSION);
console.log('Underscore version:', _.VERSION);
console.log('jQuery version:', $.fn.jquery);
var TestModel = Backbone.Model.extend({
defaults: {
message: 'Hello Backbone!'
}
});
var model = new TestModel();
console.log('Model created:', model.toJSON());
</script>
</body>
</html>
9.2 预期输出 #
text
Backbone version: 1.6.0
Underscore version: 1.13.6
jQuery version: 3.7.1
Model created: {message: "Hello Backbone!"}
十、常见问题 #
10.1 Underscore未定义 #
text
错误:Uncaught ReferenceError: _ is not defined
解决:确保先引入Underscore.js
10.2 jQuery未定义 #
text
错误:Uncaught ReferenceError: $ is not defined
解决:引入jQuery或Zepto
10.3 模块导入问题 #
javascript
// 错误方式
import Backbone from 'backbone'; // 可能无法正确导入$
// 正确方式
import Backbone from 'backbone';
import $ from 'jquery';
Backbone.$ = $;
十一、总结 #
环境搭建要点:
- 选择合适的安装方式:入门推荐CDN,项目推荐npm
- 确保依赖正确:Underscore是必需依赖
- 配置构建工具:大型项目推荐Webpack或Vite
- 使用开发工具:安装调试扩展提高效率
最后更新:2026-03-28