在GRPC客户端的examples中有两种类型的实现,一种是'use strict';
angular.module('myApp.orderNew', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/order/new', {
templateUrl: 'order-new/order-new.template.html',
controller: 'OrderNewCtrl'
});
}])
.controller('OrderNewCtrl', function($scope, $location, $http) {
$scope.field = {
amount: '1'
};
$scope.rows = [{
product: 'Product',
amount: 'Amount'
}];
$scope.counter = 1;
$scope.addRow = function() {
$scope.rows.push({
product: 'Product',
amount: 'Amount'
});
$scope.counter++;
}
$scope.delRow = function(row) {
if ($scope.rows.length < 2) { return; }
$scope.rows.splice(row, 1);
}
$scope.cancelOrder = function() {
$location.path('/orders');
}
$scope.createOrder = function() {
var data = $scope.fields;
alert(data);
//$post('/path_to_server', obj);
}
$http.get('orders.json').then(function(data) {
$scope.orders = data;
});
});
文件在运行时加载和处理,另一种是使用.proto
编译它们。
我的问题是:有什么区别?文档只是表示他们的行为相同,但肯定会有差异吗?
答案 0 :(得分:4)
从根本上说,主要区别在于您提到的:动态代码生成,.proto
文件在运行时加载和解析,并且通过静态代码生成,.proto
文件被预处理进入JavaScript。
动态代码生成使用起来更简单,可能更容易调试,并生成接受常规JavaScript对象的代码。
静态代码生成(使用protoc)要求用户创建protobuf对象,这意味着输入验证将更早完成。它也是一种与其他语言更加一致的工作流程。