蓝鲸结合vue部署手册

部署SaaS到测试/正式环境

修改应用基本配置

  • 修改配置文件中Saas平台创建应用生成的APP_ID、APP_TOKEN,配置BK_PAAS_HOST为蓝鲸实际访问路径,APP_NAME为页面标题。
    在这里插入图片描述

编写第一个应用程序,HelloWorld

  • 创建应用

    # 根路径执行命令
    python manage.py startapp demo
    
  • 编写第一个程序HelloWorld,在刚刚新建的app中创建views文件夹,在views文件夹下创建helloWorld.py文件,在文件中编写简单的helloWorld并返回。

    # 打印结果
    def hello(request):
        logger.info("helloWorld")
        result = {"message": "helloworld",
                  "data": {"user": request.user.username, "time": datetime.now().strftime('%Y-%m-%d %H:%M:%S')},
                  "result": "true"}
        return JsonResponse(result, safe=False)
    
  • 定义访问路径,在urls.py文件里面添加访问路径

    # -*- coding: utf-8 -*-
    """
    urls config
    """
    from django.conf.urls import patterns
    
    # python根路径导入要加from点
    from . import views
    
    urlpatterns = patterns(
        url(r'^$', views.home),
        url(r'^dev-guide/$', views.dev_guide),
        url(r'^contact/$', views.contact),
        url(r'^api/test$', helloWorld.hello)
    )
    

在蓝鲸 Django 开发框架新建一个 Vue.js 前端工程项目

  • 安装vue-cli

    npm install -g @vue/cli
    
  • 创建vue-app

    vue create frontend
    
  • cd到前端路径

    cd frontend 
    
  • 添加路由

    vue add router
    
  • 修改package.json配置

    "build": "vue-cli-service build --dest ../static/dist",
    
  • 引入jquery、bootstrap

    npm install jquery bootstrap@3 -S
    
  • 引入less

    npm install less less-loader -S
    
  • 引入axios

    	npm install axios -S
    
    • 安装完后在src目录新建service/index.js,配置如下
    import Axios from 'axios'
    
    const base = process.env.NODE_ENV === 'development' ? '/' : window.baseUrl
    
    const instance = Axios.create({
        validateStatus: (status) => {
            return status >= 200 && status < 300;
        },
        withCredentials: true,
        xsrfCookieName: 'csrftoken',
        xsrfHeaderName: 'X-CSRFToken',
        baseURL: base
    })
    
    export default instance
    
  • 引入element-ui

    	npm i element-ui -S
    
  • 修改main.js

    //在这里引入 bootstrap。默认只引入 bootstrap 中的 js,css 需要另外引入,我的 bootstrap.ss 在APP.vue中引入的
    import "bootstrap";
    //也可以在这里引入 bootstrap.css ;
    import "bootstrap/dist/css/bootstrap.css";
    import Vue from 'vue'
    import App from './App.vue'
    import axios from './service'
    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
    Vue.config.productionTip = false
    Vue.prototype.$http = axios
    Vue.use(ElementUI);
    new Vue({
    	render: h => h(App),
    }).$mount('#app')
    
  • 通过cdn方式引入magicbox

    <remote-css href="https://magicbox.bk.tencent.com/static_api/v3/assets/bk-icon-2.0/iconfont.css"/>
    <remote-css href="https://magicbox.bk.tencent.com/static_api/v3/bk/css/bk.css"/>
    <remote-css href="https://magicbox.bk.tencent.com/static_api/v3/bk/css-pro/bk.css"/>
    <remote-css href="https://magicbox.bk.tencent.com/static_api/v3/assets/jstree-3.1.1/dist/themes/default/style.min.css"/>
    components: {
              'remote-css': {
                  render(createElement) {
                      return createElement('link', {attrs: {rel: 'stylesheet', href: this.href}})
                  },
                  props: {
                      href: {type: String, required: true}
                  }
              }
              // 'remote-js': {
              //   render (createElement) {
              //     return createElement('script', { attrs: { type: 'text/javascript', src: this.src } })
              //   },
              //   props: {
              //     src: { type: String, required: true }
              //   }
              // }
          }
    
  • 新建vue.config.js

    const webpack = require('webpack');
    var path = require('path')
    var env = process.env.NODE_ENV
    var isProduction = env === 'production'
    function resolve(dir) {
        return path.join(__dirname, dir)
    }
    module.exports = {
        lintOnSave: 'error',
        publicPath: isProduction ?'./static/dist': '/',
        filenameHashing: false,
        devServer: {
            proxy: 'http://localhost:8000',
            disableHostCheck: true,
            port: 8080
        },
        configureWebpack: {
            plugins: [
                new webpack.ProvidePlugin({
                    $: 'jquery',
                    jQuery: 'jquery',
                    'window.jQuery': 'jquery',
                    Popper: ['popper.js', 'default']
                })
            ]
        },
        css: {
            loaderOptions: {
                sass: {
                    data: `
              @import "~@a/style/variable.scss";
            `
                }
            }
        },
        chainWebpack: (config) => {
            config.resolve.alias
                .set('@a', resolve('src/assets'))
                .set('@c', resolve('src/components'))
                .set('@s', resolve('src/service'))
                .set('@w', resolve('src/widget'))
            config.optimization.delete('splitChunks')
        }
    }
    
  • 编译前端框架

    npm run build
    
  • 修改templates下的base.html,并删除导航条及尾部说明(导航条写入vue中,方便跳转路由)

        <script type="text/javascript">
      	var app_code = "{{ APP_CODE }}";			// 在蓝鲸系统里面注册的"应用编码"
      	var site_url = "{{ SITE_URL }}";			// app的url前缀,在ajax调用的时候,应该加上该前缀
      	var remote_static_url = "{{ REMOTE_STATIC_URL }}";   //远程资源链接,403页面需要,不要删除
      	var debug_mode = JSON.parse("{{ DEBUG }}");	// 是否调试模式
          window.baseUrl = '{{ SITE_URL }}';//添加根路径访问
      </script>
    
  • 修改对应模块下templates下的index_home.html

        	{% extends "base.html" %}
      	{#插入base.html指定位置#}
      	{% block head %}
      		<title>蓝鲸模考</title>
      		 <link href={{ STATIC_URL }}dist/css/app.css rel=stylesheet>
      	{% endblock %}
      	
      	{% block navigation %}
      	{% endblock %}
      	
      	{% block content %}
      		<div id=app></div>
      	{% endblock %}
      	
      	{% block extra_block %}
      	    <script type=text/javascript src={{ STATIC_URL }}dist/js/app.js></script>
      	{% endblock %}
    

在开发者中心部署至测试环境和正式环境

  • 提交项目到git仓库,部署应用时候可通过仓库一键部署

  • 测试环境部署

    开发者中心 - 我的应用 - 部署 - 测试环境一键部署

  • 正式环境部署

    开发者中心 - 我的应用 - 部署 - 正式环境一键部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值