一些自己常用的cdn

1.vue

<script src="http://cdn.bootcss.com/vue/1.0.28-csp/vue.js"></script>

 <script src="http://cdn.bootcss.com/vue/2.1.10/vue.js"></script>

<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>

一个vue-resource的代码版本:0.7

/**
 * vue-resource v0.7.0
 * https://github.com/vuejs/vue-resource
 * Released under the MIT License.
 */

(function webpackUniversalModuleDefinition(root, factory) {
    if(typeof exports === 'object' && typeof module === 'object')
        module.exports = factory();
    else if(typeof define === 'function' && define.amd)
        define([], factory);
    else if(typeof exports === 'object')
        exports["VueResource"] = factory();
    else
        root["VueResource"] = factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/     // The module cache
/******/     var installedModules = {};

/******/     // The require function
/******/     function __webpack_require__(moduleId) {

/******/         // Check if module is in cache
/******/         if(installedModules[moduleId])
/******/             return installedModules[moduleId].exports;

/******/         // Create a new module (and put it into the cache)
/******/         var module = installedModules[moduleId] = {
/******/             exports: {},
/******/             id: moduleId,
/******/             loaded: false
/******/         };

/******/         // Execute the module function
/******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/         // Flag the module as loaded
/******/         module.loaded = true;

/******/         // Return the exports of the module
/******/         return module.exports;
/******/     }


/******/     // expose the modules object (__webpack_modules__)
/******/     __webpack_require__.m = modules;

/******/     // expose the module cache
/******/     __webpack_require__.c = installedModules;

/******/     // __webpack_public_path__
/******/     __webpack_require__.p = "";

/******/     // Load entry module and return exports
/******/     return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Install plugin.
     */

    function install(Vue) {

        var _ = __webpack_require__(1);

        _.config = Vue.config;
        _.warning = Vue.util.warn;
        _.nextTick = Vue.util.nextTick;

        Vue.url = __webpack_require__(2);
        Vue.http = __webpack_require__(8);
        Vue.resource = __webpack_require__(23);
        Vue.Promise = __webpack_require__(10);

        Object.defineProperties(Vue.prototype, {

            $url: {
                get: function () {
                    return _.options(Vue.url, this, this.$options.url);
                }
            },

            $http: {
                get: function () {
                    return _.options(Vue.http, this, this.$options.http);
                }
            },

            $resource: {
                get: function () {
                    return Vue.resource.bind(this);
                }
            },

            $promise: {
                get: function () {
                    return function (executor) {
                        return new Vue.Promise(executor, this);
                    }.bind(this);
                }
            }

        });
    }

    if (window.Vue) {
        Vue.use(install);
    }

    module.exports = install;


/***/ },
/* 1 */
/***/ function(module, exports) {

    /**
     * Utility functions.
     */

    var _ = exports, array = [], console = window.console;

    _.warn = function (msg) {
        if (console && _.warning && (!_.config.silent || _.config.debug)) {
            console.warn('[VueResource warn]: ' + msg);
        }
    };

    _.error = function (msg) {
        if (console) {
            console.error(msg);
        }
    };

    _.trim = function (str) {
        return str.replace(/^s*|s*$/g, '');
    };

    _.toLower = function (str) {
        return str ? str.toLowerCase() : '';
    };

    _.isArray = Array.isArray;

    _.isString = function (val) {
        return typeof val === 'string';
    };

    _.isFunction = function (val) {
        return typeof val === 'function';
    };

    _.isObject = function (obj) {
        return obj !== null && typeof obj === 'object';
    };

    _.isPlainObject = function (obj) {
        return _.isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype;
    };

    _.options = function (fn, obj, options) {

        options = options || {};

        if (_.isFunction(options)) {
            options = options.call(obj);
        }

        return _.merge(fn.bind({$vm: obj, $options: options}), fn, {$options: options});
    };

    _.each = function (obj, iterator) {

        var i, key;

        if (typeof obj.length == 'number') {
            for (i = 0; i < obj.length; i++) {
                iterator.call(obj[i], obj[i], i);
            }
        } else if (_.isObject(obj)) {
            for (key in obj) {
                if (obj.hasOwnProperty(key)) {
                    iterator.call(obj[key], obj[key], key);
                }
            }
        }

        return obj;
    };

    _.defaults = function (target, source) {

        for (var key in source) {
            if (target[key] === undefined) {
                target[key] = source[key];
            }
        }

        return target;
    };

    _.extend = function (target) {

        var args = array.slice.call(arguments, 1);

        args.forEach(function (arg) {
            merge(target, arg);
        });

        return target;
    };

    _.merge = function (target) {

        var args = array.slice.call(arguments, 1);

        args.forEach(function (arg) {
            merge(target, arg, true);
        });

        return target;
    };

    function merge(target, source, deep) {
        for (var key in source) {
            if (deep && (_.isPlainObject(source[key]) || _.isArray(source[key]))) {
                if (_.isPlainObject(source[key]) && !_.isPlainObject(target[key])) {
                    target[key] = {};
                }
                if (_.isArray(source[key]) && !_.isArray(target[key])) {
                    target[key] = [];
                }
                merge(target[key], source[key], deep);
            } else if (source[key] !== undefined) {
                target[key] = source[key];
            }
        }
    }


/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Service for URL templating.
     */

    var _ = __webpack_require__(1);
    var ie = document.documentMode;
    var el = document.createElement('a');

    function Url(url, params) {

        var options = url, transform;

        if (_.isString(url)) {
            options = {url: url, params: params};
        }

        options = _.merge({}, Url.options, this.$options, options);

        Url.transforms.forEach(function (handler) {
            transform = factory(handler, transform, this.$vm);
        }, this);

        return transform(options);
    };

    /**
     * Url options.
     */

    Url.options = {
        url: '',
        root: null,
        params: {}
    };

    /**
     * Url transforms.
     */

    Url.transforms = [
        __webpack_require__(3),
        __webpack_require__(5),
        __webpack_require__(6),
        __webpack_require__(7)
    ];

    /**
     * Encodes a Url parameter string.
     *
     * @param {Object} obj
     */

    Url.params = function (obj) {

        var params = [], escape = encodeURIComponent;

        params.add = function (key, value) {

            if (_.isFunction(value)) {
                value = value();
            }

            if (value === null) {
                value = '';
            }

            this.push(escape(key) + '=' + escape(value));
        };

        serialize(params, obj);

        return params.join('&').replace(/%20/g, '+');
    };

    /**
     * Parse a URL and return its components.
     *
     * @param {String} url
     */

    Url.parse = function (url) {

        if (ie) {
            el.href = url;
            url = el.href;
        }

        el.href = url;

        return {
            href: el.href,
            protocol: el.protocol ? el.protocol.replace(/:$/, '') : '',
            port: el.port,
            host: el.host,
            hostname: el.hostname,
            pathname: el.pathname.charAt(0) === '/' ? el.pathname : '/' + el.pathname,
            search: el.search ? el.search.replace(/^?/, '') : '',
            hash: el.hash ? el.hash.replace(/^#/, '') : ''
        };
    };

    function factory(handler, next, vm) {
        return function (options) {
            return handler.call(vm, options, next);
        };
    }

    function serialize(params, obj, scope) {

        var array = _.isArray(obj), plain = _.isPlainObject(obj), hash;

        _.each(obj, function (value, key) {

            hash = _.isObject(value) || _.isArray(value);

            if (scope) {
                key = scope + '[' + (plain || hash ? key : '') + ']';
            }

            if (!scope && array) {
                params.add(value.name, value.value);
            } else if (hash) {
                serialize(params, value, key);
            } else {
                params.add(key, value);
            }
        });
    }

    module.exports = _.url = Url;


/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * URL Template (RFC 6570) Transform.
     */

    var UrlTemplate = __webpack_require__(4);

    module.exports = function (options) {

        var variables = [], url = UrlTemplate.expand(options.url, options.params, variables);

        variables.forEach(function (key) {
            delete options.params[key];
        });

        return url;
    };


/***/ },
/* 4 */
/***/ function(module, exports) {

    /**
     * URL Template v2.0.6 (https://github.com/bramstein/url-template)
     */

    exports.expand = function (url, params, variables) {

        var tmpl = this.parse(url), expanded = tmpl.expand(params);

        if (variables) {
            variables.push.apply(variables, tmpl.vars);
        }

        return expanded;
    };

    exports.parse = function (template) {

        var operators = ['+', '#', '.', '/', ';', '?', '&'], variables = [];

        return {
            vars: variables,
            expand: function (context) {
                return template.replace(/{([^{}]+)}|([^{}]+)/g, function (_, expression, literal) {
                    if (expression) {

                        var operator = null, values = [];

                        if (operators.indexOf(expression.charAt(0)) !== -1) {
                            operator = expression.charAt(0);
                            expression = expression.substr(1);
                        }

                        expression.split(/,/g).forEach(function (variable) {
                            var tmp = /([^:*]*)(?::(d+)|(*))?/.exec(variable);
                            values.push.apply(values, exports.getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
                            variables.push(tmp[1]);
                        });

                        if (operator && operator !== '+') {

                            var separator = ',';

                            if (operator === '?') {
                                separator = '&';
                            } else if (operator !== '#') {
                                separator = operator;
                            }

                            return (values.length !== 0 ? operator : '') + values.join(separator);
                        } else {
                            return values.join(',');
                        }

                    } else {
                        return exports.encodeReserved(literal);
                    }
                });
            }
        };
    };

    exports.getValues = function (context, operator, key, modifier) {

        var value = context[key], result = [];

        if (this.isDefined(value) && value !== '') {
            if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
                value = value.toString();

                if (modifier && modifier !== '*') {
                    value = value.substring(0, parseInt(modifier, 10));
                }

                result.push(this.encodeValue(operator, value, this.isKeyOperator(operator) ? key : null));
            } else {
                if (modifier === '*') {
                    if (Array.isArray(value)) {
                        value.filter(this.isDefined).forEach(function (value) {
                            result.push(this.encodeValue(operator, value, this.isKeyOperator(operator) ? key : null));
                        }, this);
                    } else {
                        Object.keys(value).forEach(function (k) {
                            if (this.isDefined(value[k])) {
                                result.push(this.encodeValue(operator, value[k], k));
                            }
                        }, this);
                    }
                } else {
                    var tmp = [];

                    if (Array.isArray(value)) {
                        value.filter(this.isDefined).forEach(function (value) {
                            tmp.push(this.encodeValue(operator, value));
                        }, this);
                    } else {
                        Object.keys(value).forEach(function (k) {
                            if (this.isDefined(value[k])) {
                                tmp.push(encodeURIComponent(k));
                                tmp.push(this.encodeValue(operator, value[k].toString()));
                            }
                        }, this);
                    }

                    if (this.isKeyOperator(operator)) {
                        result.push(encodeURIComponent(key) + '=' + tmp.join(','));
                    } else if (tmp.length !== 0) {
                        result.push(tmp.join(','));
                    }
                }
            }
        } else {
            if (operator === ';') {
                result.push(encodeURIComponent(key));
            } else if (value === '' && (operator === '&' || operator === '?')) {
                result.push(encodeURIComponent(key) + '=');
            } else if (value === '') {
                result.push('');
            }
        }

        return result;
    };

    exports.isDefined = function (value) {
        return value !== undefined && value !== null;
    };

    exports.isKeyOperator = function (operator) {
        return operator === ';' || operator === '&' || operator === '?';
    };

    exports.encodeValue = function (operator, value, key) {

        value = (operator === '+' || operator === '#') ? this.encodeReserved(value) : encodeURIComponent(value);

        if (key) {
            return encodeURIComponent(key) + '=' + value;
        } else {
            return value;
        }
    };

    exports.encodeReserved = function (str) {
        return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
            if (!/%[0-9A-Fa-f]/.test(part)) {
                part = encodeURI(part);
            }
            return part;
        }).join('');
    };


/***/ },
/* 5 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Legacy Transform.
     */

    var _ = __webpack_require__(1);

    module.exports = function (options, next) {

        var variables = [], url = next(options);

        url = url.replace(/(/?):([a-z]w*)/gi, function (match, slash, name) {

            _.warn('The `:' + name + '` parameter syntax has been deprecated. Use the `{' + name + '}` syntax instead.');

            if (options.params[name]) {
                variables.push(name);
                return slash + encodeUriSegment(options.params[name]);
            }

            return '';
        });

        variables.forEach(function (key) {
            delete options.params[key];
        });

        return url;
    };

    function encodeUriSegment(value) {

        return encodeUriQuery(value, true).
            replace(/%26/gi, '&').
            replace(/%3D/gi, '=').
            replace(/%2B/gi, '+');
    }

    function encodeUriQuery(value, spaces) {

        return encodeURIComponent(value).
            replace(/%40/gi, '@').
            replace(/%3A/gi, ':').
            replace(/%24/g, '$').
            replace(/%2C/gi, ',').
            replace(/%20/g, (spaces ? '%20' : '+'));
    }


/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Query Parameter Transform.
     */

    var _ = __webpack_require__(1);

    module.exports = function (options, next) {

        var urlParams = Object.keys(_.url.options.params), query = {}, url = next(options);

       _.each(options.params, function (value, key) {
            if (urlParams.indexOf(key) === -1) {
                query[key] = value;
            }
        });

        query = _.url.params(query);

        if (query) {
            url += (url.indexOf('?') == -1 ? '?' : '&') + query;
        }

        return url;
    };


/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Root Prefix Transform.
     */

    var _ = __webpack_require__(1);

    module.exports = function (options, next) {

        var url = next(options);

        if (_.isString(options.root) && !url.match(/^(https?:)?//)) {
            url = options.root + '/' + url;
        }

        return url;
    };


/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Service for sending network requests.
     */

    var _ = __webpack_require__(1);
    var Client = __webpack_require__(9);
    var Promise = __webpack_require__(10);
    var interceptor = __webpack_require__(13);
    var jsonType = {'Content-Type': 'application/json'};

    function Http(url, options) {

        var client = Client, request, promise;

        Http.interceptors.forEach(function (handler) {
            client = interceptor(handler, this.$vm)(client);
        }, this);

        options = _.isObject(url) ? url : _.extend({url: url}, options);
        request = _.merge({}, Http.options, this.$options, options);
        promise = client(request).bind(this.$vm).then(function (response) {

            return response.ok ? response : Promise.reject(response);

        }, function (response) {

            if (response instanceof Error) {
                _.error(response);
            }

            return Promise.reject(response);
        });

        if (request.success) {
            promise.success(request.success);
        }

        if (request.error) {
            promise.error(request.error);
        }

        return promise;
    }

    Http.options = {
        method: 'get',
        data: '',
        params: {},
        headers: {},
        xhr: null,
        upload: null,
        jsonp: 'callback',
        beforeSend: null,
        crossOrigin: null,
        emulateHTTP: false,
        emulateJSON: false,
        timeout: 0
    };

    Http.interceptors = [
        __webpack_require__(14),
        __webpack_require__(15),
        __webpack_require__(16),
        __webpack_require__(18),
        __webpack_require__(19),
        __webpack_require__(20),
        __webpack_require__(21)
    ];

    Http.headers = {
        put: jsonType,
        post: jsonType,
        patch: jsonType,
        delete: jsonType,
        common: {'Accept': 'application/json, text/plain, */*'},
        custom: {'X-Requested-With': 'XMLHttpRequest'}
    };

    ['get', 'put', 'post', 'patch', 'delete', 'jsonp'].forEach(function (method) {

        Http[method] = function (url, data, success, options) {

            if (_.isFunction(data)) {
                options = success;
                success = data;
                data = undefined;
            }

            if (_.isObject(success)) {
                options = success;
                success = undefined;
            }

            return this(url, _.extend({method: method, data: data, success: success}, options));
        };
    });

    module.exports = _.http = Http;


/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Base client.
     */

    var _ = __webpack_require__(1);
    var Promise = __webpack_require__(10);
    var xhrClient = __webpack_require__(12);

    module.exports = function (request) {

        var response = (request.client || xhrClient)(request);

        return Promise.resolve(response).then(function (response) {

            if (response.headers) {

                var headers = parseHeaders(response.headers);

                response.headers = function (name) {

                    if (name) {
                        return headers[_.toLower(name)];
                    }

                    return headers;
                };

            }

            response.ok = response.status >= 200 && response.status < 300;

            return response;
        });

    };

    function parseHeaders(str) {

        var headers = {}, value, name, i;

        if (_.isString(str)) {
            _.each(str.split('
'), function (row) {

                i = row.indexOf(':');
                name = _.trim(_.toLower(row.slice(0, i)));
                value = _.trim(row.slice(i + 1));

                if (headers[name]) {

                    if (_.isArray(headers[name])) {
                        headers[name].push(value);
                    } else {
                        headers[name] = [headers[name], value];
                    }

                } else {

                    headers[name] = value;
                }

            });
        }

        return headers;
    }


/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Promise adapter.
     */

    var _ = __webpack_require__(1);
    var PromiseObj = window.Promise || __webpack_require__(11);

    function Promise(executor, context) {

        if (executor instanceof PromiseObj) {
            this.promise = executor;
        } else {
            this.promise = new PromiseObj(executor.bind(context));
        }

        this.context = context;
    }

    Promise.all = function (iterable, context) {
        return new Promise(PromiseObj.all(iterable), context);
    };

    Promise.resolve = function (value, context) {
        return new Promise(PromiseObj.resolve(value), context);
    };

    Promise.reject = function (reason, context) {
        return new Promise(PromiseObj.reject(reason), context);
    };

    Promise.race = function (iterable, context) {
        return new Promise(PromiseObj.race(iterable), context);
    };

    var p = Promise.prototype;

    p.bind = function (context) {
        this.context = context;
        return this;
    };

    p.then = function (fulfilled, rejected) {

        if (fulfilled && fulfilled.bind && this.context) {
            fulfilled = fulfilled.bind(this.context);
        }

        if (rejected && rejected.bind && this.context) {
            rejected = rejected.bind(this.context);
        }

        this.promise = this.promise.then(fulfilled, rejected);

        return this;
    };

    p.catch = function (rejected) {

        if (rejected && rejected.bind && this.context) {
            rejected = rejected.bind(this.context);
        }

        this.promise = this.promise.catch(rejected);

        return this;
    };

    p.finally = function (callback) {

        return this.then(function (value) {
                callback.call(this);
                return value;
            }, function (reason) {
                callback.call(this);
                return PromiseObj.reject(reason);
            }
        );
    };

    p.success = function (callback) {

        _.warn('The `success` method has been deprecated. Use the `then` method instead.');

        return this.then(function (response) {
            return callback.call(this, response.data, response.status, response) || response;
        });
    };

    p.error = function (callback) {

        _.warn('The `error` method has been deprecated. Use the `catch` method instead.');

        return this.catch(function (response) {
            return callback.call(this, response.data, response.status, response) || response;
        });
    };

    p.always = function (callback) {

        _.warn('The `always` method has been deprecated. Use the `finally` method instead.');

        var cb = function (response) {
            return callback.call(this, response.data, response.status, response) || response;
        };

        return this.then(cb, cb);
    };

    module.exports = Promise;


/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)
     */

    var _ = __webpack_require__(1);

    var RESOLVED = 0;
    var REJECTED = 1;
    var PENDING  = 2;

    function Promise(executor) {

        this.state = PENDING;
        this.value = undefined;
        this.deferred = [];

        var promise = this;

        try {
            executor(function (x) {
                promise.resolve(x);
            }, function (r) {
                promise.reject(r);
            });
        } catch (e) {
            promise.reject(e);
        }
    }

    Promise.reject = function (r) {
        return new Promise(function (resolve, reject) {
            reject(r);
        });
    };

    Promise.resolve = function (x) {
        return new Promise(function (resolve, reject) {
            resolve(x);
        });
    };

    Promise.all = function all(iterable) {
        return new Promise(function (resolve, reject) {
            var count = 0, result = [];

            if (iterable.length === 0) {
                resolve(result);
            }

            function resolver(i) {
                return function (x) {
                    result[i] = x;
                    count += 1;

                    if (count === iterable.length) {
                        resolve(result);
                    }
                };
            }

            for (var i = 0; i < iterable.length; i += 1) {
                Promise.resolve(iterable[i]).then(resolver(i), reject);
            }
        });
    };

    Promise.race = function race(iterable) {
        return new Promise(function (resolve, reject) {
            for (var i = 0; i < iterable.length; i += 1) {
                Promise.resolve(iterable[i]).then(resolve, reject);
            }
        });
    };

    var p = Promise.prototype;

    p.resolve = function resolve(x) {
        var promise = this;

        if (promise.state === PENDING) {
            if (x === promise) {
                throw new TypeError('Promise settled with itself.');
            }

            var called = false;

            try {
                var then = x && x['then'];

                if (x !== null && typeof x === 'object' && typeof then === 'function') {
                    then.call(x, function (x) {
                        if (!called) {
                            promise.resolve(x);
                        }
                        called = true;

                    }, function (r) {
                        if (!called) {
                            promise.reject(r);
                        }
                        called = true;
                    });
                    return;
                }
            } catch (e) {
                if (!called) {
                    promise.reject(e);
                }
                return;
            }

            promise.state = RESOLVED;
            promise.value = x;
            promise.notify();
        }
    };

    p.reject = function reject(reason) {
        var promise = this;

        if (promise.state === PENDING) {
            if (reason === promise) {
                throw new TypeError('Promise settled with itself.');
            }

            promise.state = REJECTED;
            promise.value = reason;
            promise.notify();
        }
    };

    p.notify = function notify() {
        var promise = this;

        _.nextTick(function () {
            if (promise.state !== PENDING) {
                while (promise.deferred.length) {
                    var deferred = promise.deferred.shift(),
                        onResolved = deferred[0],
                        onRejected = deferred[1],
                        resolve = deferred[2],
                        reject = deferred[3];

                    try {
                        if (promise.state === RESOLVED) {
                            if (typeof onResolved === 'function') {
                                resolve(onResolved.call(undefined, promise.value));
                            } else {
                                resolve(promise.value);
                            }
                        } else if (promise.state === REJECTED) {
                            if (typeof onRejected === 'function') {
                                resolve(onRejected.call(undefined, promise.value));
                            } else {
                                reject(promise.value);
                            }
                        }
                    } catch (e) {
                        reject(e);
                    }
                }
            }
        });
    };

    p.then = function then(onResolved, onRejected) {
        var promise = this;

        return new Promise(function (resolve, reject) {
            promise.deferred.push([onResolved, onRejected, resolve, reject]);
            promise.notify();
        });
    };

    p.catch = function (onRejected) {
        return this.then(undefined, onRejected);
    };

    module.exports = Promise;


/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * XMLHttp client.
     */

    var _ = __webpack_require__(1);
    var Promise = __webpack_require__(10);

    module.exports = function (request) {
        return new Promise(function (resolve) {

            var xhr = new XMLHttpRequest(), response = {request: request}, handler;

            request.cancel = function () {
                xhr.abort();
            };

            xhr.open(request.method, _.url(request), true);

            handler = function (event) {

                response.data = xhr.responseText;
                response.status = xhr.status;
                response.statusText = xhr.statusText;
                response.headers = xhr.getAllResponseHeaders();

                resolve(response);
            };

            xhr.timeout = 0;
            xhr.onload = handler;
            xhr.onabort = handler;
            xhr.onerror = handler;
            xhr.ontimeout = function () {};
            xhr.onprogress = function () {};

            if (_.isPlainObject(request.xhr)) {
                _.extend(xhr, request.xhr);
            }

            if (_.isPlainObject(request.upload)) {
                _.extend(xhr.upload, request.upload);
            }

            _.each(request.headers || {}, function (value, header) {
                xhr.setRequestHeader(header, value);
            });

            xhr.send(request.data);
        });
    };


/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Interceptor factory.
     */

    var _ = __webpack_require__(1);
    var Promise = __webpack_require__(10);

    module.exports = function (handler, vm) {

        return function (client) {

            if (_.isFunction(handler)) {
                handler = handler.call(vm, Promise);
            }

            return function (request) {

                if (_.isFunction(handler.request)) {
                    request = handler.request.call(vm, request);
                }

                return when(request, function (request) {
                    return when(client(request), function (response) {

                        if (_.isFunction(handler.response)) {
                            response = handler.response.call(vm, response);
                        }

                        return response;
                    });
                });
            };
        };
    };

    function when(value, fulfilled, rejected) {

        var promise = Promise.resolve(value);

        if (arguments.length < 2) {
            return promise;
        }

        return promise.then(fulfilled, rejected);
    }


/***/ },
/* 14 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Before Interceptor.
     */

    var _ = __webpack_require__(1);

    module.exports = {

        request: function (request) {

            if (_.isFunction(request.beforeSend)) {
                request.beforeSend.call(this, request);
            }

            return request;
        }

    };


/***/ },
/* 15 */
/***/ function(module, exports) {

    /**
     * Timeout Interceptor.
     */

    module.exports = function () {

        var timeout;

        return {

            request: function (request) {

                if (request.timeout) {
                    timeout = setTimeout(function () {
                        request.cancel();
                    }, request.timeout);
                }

                return request;
            },

            response: function (response) {

                clearTimeout(timeout);

                return response;
            }

        };
    };


/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * JSONP Interceptor.
     */

    var jsonpClient = __webpack_require__(17);

    module.exports = {

        request: function (request) {

            if (request.method == 'JSONP') {
                request.client = jsonpClient;
            }

            return request;
        }

    };


/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * JSONP client.
     */

    var _ = __webpack_require__(1);
    var Promise = __webpack_require__(10);

    module.exports = function (request) {
        return new Promise(function (resolve) {

            var callback = '_jsonp' + Math.random().toString(36).substr(2), response = {request: request, data: null}, handler, script;

            request.params[request.jsonp] = callback;
            request.cancel = function () {
                handler({type: 'cancel'});
            };

            script = document.createElement('script');
            script.src = _.url(request);
            script.type = 'text/javascript';
            script.async = true;

            window[callback] = function (data) {
                response.data = data;
            };

            handler = function (event) {

                if (event.type === 'load' && response.data !== null) {
                    response.status = 200;
                } else if (event.type === 'error') {
                    response.status = 404;
                } else {
                    response.status = 0;
                }

                resolve(response);

                delete window[callback];
                document.body.removeChild(script);
            };

            script.onload = handler;
            script.onerror = handler;

            document.body.appendChild(script);
        });
    };


/***/ },
/* 18 */
/***/ function(module, exports) {

    /**
     * HTTP method override Interceptor.
     */

    module.exports = {

        request: function (request) {

            if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {
                request.headers['X-HTTP-Method-Override'] = request.method;
                request.method = 'POST';
            }

            return request;
        }

    };


/***/ },
/* 19 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Mime Interceptor.
     */

    var _ = __webpack_require__(1);

    module.exports = {

        request: function (request) {

            if (request.emulateJSON && _.isPlainObject(request.data)) {
                request.headers['Content-Type'] = 'application/x-www-form-urlencoded';
                request.data = _.url.params(request.data);
            }

            if (_.isObject(request.data) && /FormData/i.test(request.data.toString())) {
                delete request.headers['Content-Type'];
            }

            if (_.isPlainObject(request.data)) {
                request.data = JSON.stringify(request.data);
            }

            return request;
        },

        response: function (response) {

            try {
                response.data = JSON.parse(response.data);
            } catch (e) {}

            return response;
        }

    };


/***/ },
/* 20 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Header Interceptor.
     */

    var _ = __webpack_require__(1);

    module.exports = {

        request: function (request) {

            request.method = request.method.toUpperCase();
            request.headers = _.extend({}, _.http.headers.common,
                !request.crossOrigin ? _.http.headers.custom : {},
                _.http.headers[request.method.toLowerCase()],
                request.headers
            );

            if (_.isPlainObject(request.data) && /^(GET|JSONP)$/i.test(request.method)) {
                _.extend(request.params, request.data);
                delete request.data;
            }

            return request;
        }

    };


/***/ },
/* 21 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * CORS Interceptor.
     */

    var _ = __webpack_require__(1);
    var xdrClient = __webpack_require__(22);
    var xhrCors = 'withCredentials' in new XMLHttpRequest();
    var originUrl = _.url.parse(location.href);

    module.exports = {

        request: function (request) {

            if (request.crossOrigin === null) {
                request.crossOrigin = crossOrigin(request);
            }

            if (request.crossOrigin) {

                if (!xhrCors) {
                    request.client = xdrClient;
                }

                request.emulateHTTP = false;
            }

            return request;
        }

    };

    function crossOrigin(request) {

        var requestUrl = _.url.parse(_.url(request));

        return (requestUrl.protocol !== originUrl.protocol || requestUrl.host !== originUrl.host);
    }


/***/ },
/* 22 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * XDomain client (Internet Explorer).
     */

    var _ = __webpack_require__(1);
    var Promise = __webpack_require__(10);

    module.exports = function (request) {
        return new Promise(function (resolve) {

            var xdr = new XDomainRequest(), response = {request: request}, handler;

            request.cancel = function () {
                xdr.abort();
            };

            xdr.open(request.method, _.url(request), true);

            handler = function (event) {

                response.data = xdr.responseText;
                response.status = xdr.status;
                response.statusText = xdr.statusText;

                resolve(response);
            };

            xdr.timeout = 0;
            xdr.onload = handler;
            xdr.onabort = handler;
            xdr.onerror = handler;
            xdr.ontimeout = function () {};
            xdr.onprogress = function () {};

            xdr.send(request.data);
        });
    };


/***/ },
/* 23 */
/***/ function(module, exports, __webpack_require__) {

    /**
     * Service for interacting with RESTful services.
     */

    var _ = __webpack_require__(1);

    function Resource(url, params, actions, options) {

        var self = this, resource = {};

        actions = _.extend({},
            Resource.actions,
            actions
        );

        _.each(actions, function (action, name) {

            action = _.merge({url: url, params: params || {}}, options, action);

            resource[name] = function () {
                return (self.$http || _.http)(opts(action, arguments));
            };
        });

        return resource;
    }

    function opts(action, args) {

        var options = _.extend({}, action), params = {}, data, success, error;

        switch (args.length) {

            case 4:

                error = args[3];
                success = args[2];

            case 3:
            case 2:

                if (_.isFunction(args[1])) {

                    if (_.isFunction(args[0])) {

                        success = args[0];
                        error = args[1];

                        break;
                    }

                    success = args[1];
                    error = args[2];

                } else {

                    params = args[0];
                    data = args[1];
                    success = args[2];

                    break;
                }

            case 1:

                if (_.isFunction(args[0])) {
                    success = args[0];
                } else if (/^(POST|PUT|PATCH)$/i.test(options.method)) {
                    data = args[0];
                } else {
                    params = args[0];
                }

                break;

            case 0:

                break;

            default:

                throw 'Expected up to 4 arguments [params, data, success, error], got ' + args.length + ' arguments';
        }

        options.data = data;
        options.params = _.extend({}, options.params, params);

        if (success) {
            options.success = success;
        }

        if (error) {
            options.error = error;
        }

        return options;
    }

    Resource.actions = {

        get: {method: 'GET'},
        save: {method: 'POST'},
        query: {method: 'GET'},
        update: {method: 'PUT'},
        remove: {method: 'DELETE'},
        delete: {method: 'DELETE'}

    };

    module.exports = _.resource = Resource;


/***/ }
/******/ ])
});
;
View Code
原文地址:https://www.cnblogs.com/coding4/p/6412214.html