前端脚手架BigFish

摘要:
Config和其他配置文件tnpmrundevs:执行单元测试tnpxbigfish v:静态站点类应用程序appType:后续操作可以自定义deployMode://YouENV可以通过这种配置与BIGFISH合作。ENV满足一组代码的多种部署的多样性要求。userConfig:target是指文件夹名称路由,其中与后台服务地址proxy:component对应的字符串是src/page/*

Bigfish 企业级前端开发框架,与常见的前端框架和工具不同,它从工程角度集成了各类功能,从初始化开发到最终上线整套技术方案,解决了前端开发经常遇到的前端技术栈整合配置麻烦、开发联调麻烦、前端资源发布上线麻烦三大痛点。

Bigfish主要具备以下功能:

基于 umi 整合了前端工具链:整合了 Ant Design、Dva、Ant Design Pro 技术栈,最小化成本开发

简化开发联调:提供前端 http 接口的代理,在开发过程中随时切换 mock 和联调接口,方便自测和联调

一站式发布部署:从工程初始化,到研发迭代管理,到一键发布静态资源及页面渲染

安装
想要使用bigfish,首先需要安装版本正确的NodeJS和tnpm,然后到我们要创建bigfish的目录执行:

tnpm install
通过这样安装我们就可以使用bigfish的命令来开发和调试了,他的命令都存放在一个package.json文件中

命令
我们使用bigfish从开发到调试基本都是通过命令行来实现的,所以下面介绍一些常用的命令:

tnpm run dev : 启动本地开发模式并启动应用,通过这种方式启动项目在修改文件之后不需要重复启动,除非你是修改了model,config等配置文件

tnpm run devs : 启动前后端联调模式,通过config.js中的配置找到后端的服务器,进行前后端的联调

tnpm run test : 执行单元测试

tnpx bigfish -v : 查看当前正在执行的bigfish的版本

配置
bigfish中我们通过config/config.js这个文件进行配置,我们在本地的时候可以设置config/config.local.js它会覆盖上一个文件起到本地调试的配置作用。为了让下面的介绍更加直观,我们直接看配置文件的例子,并给出注释:

import pageRoutes from './router.config';
import defaultSettings from '../src/defaultSettings';
 
export default {
 
  // 应用类型,有三个可添项:
  // console 控制台(中台)应用,从 bigfish 1.0 迁移过来的应用请填写该项
  // h5,移动端 h5 应用
  // site,静态站点类应用
  appType: 'console',
 
  // 部署模式,有下面多个可添项:
  // bigfishweb,通过 site 对内站点应用(bigfishweb)部署
  // assets,适配 Basement 中的 标准前端应用(assets 应用)类型
  // sofa,适配 Bigfish 的 SOFA 集成部署模式
  // chair,适配 Bigfish 的 Chair 集成部署模式
  // offline,离线 h5 应用的部署模式
  // online,在线 h5 应用的部署模式
  // custom,自定义部署模式,该模式下只会把产物构建到 dist 目录,后续操作可以自定义
  deployMode: 'sofa',
 
  // 你可以通过该配置配合 BIGFISH_ENV 满足部分一套代码多处部署的差异性需求
  userConfig: {
    // ...
  }
 
  // 用于配置接口的代理, target 是指后台服务地址
  proxy: {
    "dev": {
      "api/": {
        "target": "http://xxx.alipay.net",
        "headers": {
          "Host": "xxx.alipay.net", 
        }
      }
    },
    "test": {
      "api/": {
        "target": "http://xxx.alipay.net"
      }
    },
    "pre": {
      "api/": {
        "target": "ningzhen"
      }
    }
  },
 
  // 路由配置
  // 路由配置参考如下示例,基于 react-router 实现,支持路由嵌套
  // 这个 exports.router 是一个 json,component 对应的字符串是 src/page/* 的文件夹名称
  routes: {
    path: '/',
    component: 'LayoutPage',
    indexRoute: { component: 'IndexPage' },
    childRoutes: [
      { path: '/userlist', component: 'UserListPage' },
      { path: '/user/:id', component: 'UserPage' },
      { path: '/user2/:id', redirect: '/user/:id' },
    ],
  },
 
  // 主题
  theme: {
    'primary-color': defaultSettings.primaryColor,
  },
 
  // 国际化配置
  locale: {
    enable: true,
  },
 
  // 设置 html 的 favicon url 地址
  favicon: 'https://xxx.alipayobjects.com/zos/rmsportal/uLsFenYjfFtKMzBaUpeS.png',
  
  // 默认是 false,设置为 true 之后发出的请求都会默认带上 ctoken。
  // 注意前提是你必须使用 bigfish 内置的网络请求的方案 @alipay/bigfish/sdk/fetch 或者 @alipay/bigfish/sdk/request。
  ctoken: true,
 
  // 通过 script 和 externals 配置提高构建速度和减小构建产物的体积
  // 如果你没有用到图表中的 data-set 可以去掉下面相关代码
  // 原 assets 应用因为没有引入 bigfish 的 html,所以需要手动添加 script 到 vm 中
  //(推荐升级 assets 到新版直接引入 bigfish 的方案解决)
  script: ['https://xxx.alipayobjects.com/os/antv/pkg/_antv.data-set-0.9.6/dist/data-set.min.js'],
  
  externals: {
    '@antv/data-set': 'DataSet',
  },
 
  // 在有的浏览器中因为浏览器的原因有些 JS 的特性可能没有
  // 比如 IE 不支持 Promise,这样可能会导致项目运行时出错
  // 但是你的项目有兼容性的需求需要支持该部分浏览器
  // 那么你可以通过配置 targets 来添加相关的 polyfills 用以支持更多浏览器
  // 下文表示额外支持ie11
  targets: {
    ie: 11,
  }
};
 
路由
路由是一个数组,数组中每一个对象是一个路由信息,路由会从前到后匹配

可以在路由中使用属性:routes,继续用嵌套的方式匹配其他的路由

使用属性indexRoute,将当前的路径默认设置为展示某个component。或者在属性indexRoute中可以使用redirect重定向属性,指向某一个路径

使用history.push的方法在组件中跳转到指定路由

组件中可以通过props的属性params和location获取路由相关的参数

可以通过Link标签在html中进行页面跳转,外部链接使用a标签

history.push('/your/url/path'); // 跳转到指定路由‘
 
// 带参数跳转到指定路由
history.push('/list?a=b');
history.push({
  pathname: '/list',
  query: {
    a: 'b',
  },
});
 
history.goBack(); // 跳转到上一个路由
=====================================================
 
/path/:id /path/123?type=test
 
this.props.params
{
  id: '123'
}
 
this.props.location
{
  pathname: '/path/123',
  search: '?type=test'
}
 
=====================================================
 
import { Link } from '@alipay/bigfish/sdk/router';
<Link to="/your/path">link name</Link>


转载:https://blog.csdn.net/QuinnNorris/article/details/84852231 

免责声明:文章转载自《前端脚手架BigFish》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇R语言-查找满足条件的数并获取索引【Arduino】使用C#实现Arduino与电脑进行串行通讯下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

笔记本硬盘升级--SSD换成三星evo 970 plus注意事项

以Dell Vostro5370 为例,其它笔记本也适用。 注意:1. 这款笔记本只有一个m.2槽位。换SSD需要重装系统。2. 这款笔记本最大只支持512GB!最大只支持512GB!最大只支持512GB!3. 重装系统前需设置BIOS>>System Configuration>>SATA Configuration>>...

TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)

在 PHP 应用开发中,往往需要验证用户邮箱、发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持。     如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮件发送程序了,不过开发这样一个程序并不容易。      好在 PHPMailer 封装的足够强大,使用它可以更加便捷的发送邮件,免去了我们很多额外的麻...

写了一个 gorm 乐观锁插件

前言 最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常。 所以自然就想到了乐观锁的解决方案。 实现 乐观锁的实现比较简单,相信大部分有数据库使用经验的都能想到。 UPDATE `table` SET `amount`=100,`version`=version+1 WHERE `version` =...

那些年踩过的WebAPI的坑(一)

Visual Studio创建一个web项目, 在下一步的时候创建WebAPI项目的时候勾选web API之后,系统会生成一个web项目。 首先看一下webapi的路由配置,在App_start/webapiconfig.cs中,可以看到如下代码: 1 public static void Register(HttpConfiguration con...

drf 三大认证详解

目录 drf 三大认证: 认证: 权限:认证与权限组件绑定使用: 频率:多方式登录: drf 三大认证: 认证: # 全局配置: -在全局(认证组件只能决定request.user,不是断定权限的地方,所以一般配置全局) REST_FRAMEWORK = { # 认证组件 'DEFAULT_AUTHENTI...

layer iframe 设置关闭按钮 和刷新和弹出框设置

layer弹出层的关闭问题    就是在执行添加或修改的时候,需要将数据提交到后台进行处理,这时候添加成功之后最理想的状态是关闭弹出层并且刷新列表的数据信息,之前一直想实现这样,可一直没有成功,今天决定好好弄一弄,在仔细看过layer的帮助手册以及查阅资料之后,有了以下的解决办法: 一、关闭弹出窗   这是layer官网给出的帮助手册,讲解的比较详细...