我本身尝试简单的单间一个能返回数据的后台服务器,ionic的www目录我使用一个ionic的livereload 来当作一个简易的web服务器,在使用ionic serve 或者ionic build的时候会发生跨域的问题,参考@donghongfei的分享解决了这个问题,记录一下,再次遇到就不怕。javascript
{ "name": "proxy-example", "app_id": "", "proxies": [ { "path": "/api",// "proxyUrl": "http://cors.api.com/api" } ] }
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services']) .constant('ApiEndpoint', { url: 'http://localhost:8100/api' })
3.设置angular的servicejava
angular.module('starter.services', []) //NOTE: We are including the constant `ApiEndpoint` to be used here. .factory('Api', function($http, ApiEndpoint) { console.log('ApiEndpoint', ApiEndpoint) var getApiData = function() { return $http.get(ApiEndpoint.url + '/tasks') .then(function(data) { console.log('Got some data: ', data); return data; }); }; return { getApiData: getApiData }; })
4.经过gulp自动转化地址,修改gulpfile添加两个任务,同时须要先下载replace插件
npm install replace --savegit
var replace = require('replace'); var replaceFiles = ['./www/js/app.js']; gulp.task('add-proxy', function() { return replace({ regex: "http://cors.api.com/api", replacement: "http://localhost:8100/api", paths: replaceFiles, recursive: false, silent: false, }); }) gulp.task('remove-proxy', function() { return replace({ regex: "http://localhost:8100/api", replacement: "http://cors.api.com/api", paths: replaceFiles, recursive: false, silent: false, }); })
5.上面的第二步是他的方法,放在个人项目中不方便,我就单独写了一个proxy文件,而后在须要的模块中引入,调用便可,可是url我这里须要使用服务器地址,而不是livereload地址,这个须要注意
最后补充:)个人www目录结构已经发布到github,地址github