Protocol Buffers - Google's data interchange format
===================================================
[![Build Status](https://travis-ci.org/google/protobuf.svg?branch=master)](https://travis-ci.org/google/protobuf)
Copyright 2008 Google Inc.
This directory contains the JavaScript Protocol Buffers runtime library.
The library is currently compatible with:
1. CommonJS-style imports (eg. `var protos = require('my-protos');`)
2. Closure-style imports (eg. `goog.require('my.package.MyProto');`)
Support for ES6-style imports is not implemented yet. Browsers can
be supported by using Browserify, webpack, Closure Compiler, etc. to
resolve imports at compile time.
To use Protocol Buffers with JavaScript, you need two main components:
1. The protobuf runtime library. You can install this with
`npm install google-protobuf`, or use the files in this directory.
If npm is not being used, as of 3.3.0, the files needed are located in binary subdirectory;
arith.js, constants.js, decoder.js, encoder.js, map.js, message.js, reader.js, utils.js, writer.js
2. The Protocol Compiler `protoc`. This translates `.proto` files
into `.js` files. The compiler is not currently available via
npm, but you can download a pre-built binary
[on GitHub](https://github.com/google/protobuf/releases)
(look for the `protoc-*.zip` files under **Downloads**).
Setup
=====
First, obtain the Protocol Compiler. The easiest way is to download
a pre-built binary from [https://github.com/google/protobuf/releases](https://github.com/google/protobuf/releases).
If you want, you can compile `protoc` from source instead. To do this
follow the instructions in [the top-level
README](https://github.com/google/protobuf/blob/master/src/README.md).
Once you have `protoc` compiled, you can run the tests by typing:
$ cd js
$ npm install
$ npm test
# If your protoc is somewhere else than ../src/protoc, instead do this.
# But make sure your protoc is the same version as this (or compatible)!
$ PROTOC=/usr/local/bin/protoc npm test
This will run two separate copies of the tests: one that uses
Closure Compiler style imports and one that uses CommonJS imports.
You can see all the CommonJS files in `commonjs_out/`.
If all of these tests pass, you know you have a working setup.
Using Protocol Buffers in your own project
==========================================
To use Protocol Buffers in your own project, you need to integrate
the Protocol Compiler into your build system. The details are a
little different depending on whether you are using Closure imports
or CommonJS imports:
Closure Imports
---------------
If you want to use Closure imports, your build should run a command
like this:
$ protoc --js_out=library=myproto_libs,binary:. messages.proto base.proto
For Closure imports, `protoc` will generate a single output file
(`myproto_libs.js` in this example). The generated file will `goog.provide()`
all of the types defined in your .proto files. For example, for the unit
tests the generated files contain many `goog.provide` statements like:
goog.provide('proto.google.protobuf.DescriptorProto');
goog.provide('proto.google.protobuf.DescriptorProto.ExtensionRange');
goog.provide('proto.google.protobuf.DescriptorProto.ReservedRange');
goog.provide('proto.google.protobuf.EnumDescriptorProto');
goog.provide('proto.google.protobuf.EnumOptions');
The generated code will also `goog.require()` many types in the core library,
and they will require many types in the Google Closure library. So make sure
that your `goog.provide()` / `goog.require()` setup can find all of your
generated code, the core library `.js` files in this directory, and the
Google Closure library itself.
Once you've done this, you should be able to import your types with
statements like:
goog.require('proto.my.package.MyMessage');
var message = proto.my.package.MyMessage();
If unfamiliar with Closure or it's compiler, consider reviewing Closure documentation
https://developers.google.com/closure/library/docs/tutorial
https://developers.google.com/closure/library/docs/closurebuilder
https://developers.google.com/closure/library/docs/depswriter
At a high level, closurebuilder.py can walk dependencies, and compile your code, and all dependencies for Protobuf into a single .js file. Using depsbuilder.py to generate a dependency file can also be considered for non-production dev environments.
CommonJS imports
----------------
If you want to use CommonJS imports, your build should run a command
like this:
$ protoc --js_out=import_style=commonjs,binary:. messages.proto base.proto
For CommonJS imports, `protoc` will spit out one file per input file
(so `messages_pb.js` and `base_pb.js` in this example). The generated
code will depend on the core runtime, which should be in a file called
`google-protobuf.js`. If you are installing from `npm`, this file should
already be built and available. If you are running from GitHub, you need
to build it first by running:
$ gulp dist
Once you've done this, you should be able to import your types with
statements like:
var messages = require('./messages_pb');
var message = new messages.MyMessage();
The `--js_out` flag
-------------------
The syntax of the `--js_out` flag is:
--js_out=[OPTIONS:]output_dir
Where `OPTIONS` are separated by commas. Options are either `opt=val` or
just `opt` (for options that don't take a value). The available options
are specified and documented in the `GeneratorOptions` struct in
[src/google/protobuf/compiler/js/js_generator.h](https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/js/js_generator.h#L53).
Some examples:
- `--js_out=library=myprotos_lib.js,binary:.`: this contains the options
`library=myprotos.lib.js` and `binary` and outputs to the current directory.
The `import_style` option is left to the default, which is `closure`.
- `--js_out=import_style=commonjs,binary:protos`: this contains the options
`import_style=commonjs` and `binary` and outputs to the directory `protos`.
API
===
The API is not well-documented yet. Here is a quick example to give you an
idea of how the library generally works:
var message = new MyMessage();
message.setName("John Doe");
message.setAge(25);
message.setPhoneNumbers(["800-555-1212", "800-555-0000"]);
// Serializes to a UInt8Array.
var bytes = message.serializeBinary();
var message2 = MyMessage.deserializeBinary(bytes);
For more examples, see the tests. You can also look at the generated code
to see what methods are defined for your generated messages.
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【作品名称】:基于go语言实现的在线测评系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 服务器端逻辑使用go语言完成,客户端使用html+js+css实现 TODO: 服务器基本框架 网络连接逻辑 * 服务器客户端协议制定 * 数据库逻辑 * 注册逻辑 * 登录逻辑 * 管理员模式 测评系统 网关逻辑 分布式框架
资源推荐
资源详情
资源评论
收起资源包目录
EvaluationServer-code.zip (81个子文件)
EvaluationServer-code
.DS_Store 6KB
EvaluationServer
.DS_Store 6KB
msql
mysql.go 6KB
bank
ques.txt 3KB
ques.1.txt 11KB
bank.go 2KB
mnet
hub.go 2KB
idcreator.go 796B
pb
user.pb.go 19KB
user.proto 1KB
main
main.exe 8.83MB
time.go 774B
server.go 4KB
main.go 1KB
client
.DS_Store 6KB
assets
js
template.js 9KB
sea
seajs-waiting.js 839B
wait.js 301B
sea.js 11KB
seajs-modal-common.js 7KB
jquery.magnific-popup.js 45KB
net.js 3KB
countdown.js 3KB
jquery.growl.js 7KB
validation.js 2KB
answer_js.js 1KB
jquery-2.1.4.min.js 82KB
css
answer_style.css 2KB
font-awesome.min.css 28KB
jquery.growl.css 2KB
time.css 2KB
styles.css 13KB
snow.css 2KB
html
answer.html 2KB
login.html 2KB
adminlogin.html 2KB
answer.1.html 5KB
signup.html 2KB
time.html 1KB
pb
user_pb.js 52KB
node_modules
google-protobuf
google
protobuf
wrappers_pb.js 41KB
struct_pb.js 26KB
field_mask_pb.js 5KB
source_context_pb.js 5KB
empty_pb.js 4KB
api_pb.js 26KB
duration_pb.js 5KB
any_pb.js 7KB
descriptor_pb.js 279KB
type_pb.js 44KB
timestamp_pb.js 6KB
compiler
plugin_pb.js 33KB
package.json 1KB
google-protobuf.js 157KB
README.md 7KB
exports.js 86B
bundle.js 534KB
package.json 275B
package-lock.json 376B
user.proto 1KB
images
time
digits(hong).png 129KB
countdown.png 265KB
time-placeholder.png 9KB
bg-tile.png 8KB
digits.png 98KB
seajs-waiting-loading.gif 9KB
banner.jpg 484KB
snow-large-1.png 956B
snow-small-3.png 3KB
5.jpg 213KB
favicon.ico 5KB
snow-medium-2.png 7KB
flower.png 18KB
fonts
FontAwesome.otf 122KB
fontawesome-webfont.eot 75KB
fontawesome-webfont.woff 88KB
fontawesome-webfont.woff2 70KB
fontawesome-webfont.svg 382KB
fontawesome-webfont.ttf 149KB
index.html 1KB
README.md 322B
共 81 条
- 1
资源评论
MarcoPage
- 粉丝: 3083
- 资源: 3405
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功