前端架构全览:从规范到微前端实战

1星 需积分: 5 11 下载量 185 浏览量 更新于2024-07-16 1 收藏 840KB PDF 举报
"不同角度看前端 ppt.pdf" 这本前端架构的全套实施手册着重于从多个角度理解和实践前端开发,旨在帮助开发者在大前端时代应对日益复杂的前端挑战。作者徐飞飞,以其丰富的经验和深入的洞察力,揭示了前端架构的多维度理解,包括架构规范、前端架构设计以及微前端架构的拆分。 首先,书中介绍了架构规范,这是前端开发的基础,它确保了代码的一致性和可维护性。通过建立和遵循良好的编码规范,团队可以提高工作效率,减少错误,并使项目更容易被其他开发者理解和接手。 其次,前端架构设计部分探讨了如何从零开始构建一个健壮的前端系统。这包括选择合适的框架和库,设计合理的模块结构,以及考虑性能优化和可扩展性。作者还提出了如何根据项目需求进行架构的演进,如更新、迁移、重构、重写和重新架构,这些都是保证系统持续适应变化的关键步骤。 微前端架构是近年来备受关注的话题,该手册深入分析了六种微前端概念,详细解释了如何划分和设计微前端应用。这种架构模式允许将大型应用拆分为小型、独立的子应用,便于管理和更新,同时降低了复杂性。 此外,书中还涉及到了前端领域的探索,如工程体系的构建、跨端实践、NodeJS服务的运用,以及前后端协作的相关方法。通过典型的研发流程,比如前端独立构建和发布、后端独立构建和发布,以及利用类似Swagger的工具进行接口约定,作者揭示了当前前端开发的常见做法和问题。 针对协作中的痛点,如“哑铃型研发流程”,作者提出了前端主导和后端主导两种工程体系的优缺点,并讨论了组件化作为改进方案的重要性。组件化不仅提高了代码复用,也使得开发更加灵活。书中提到了前端不分层和分层的组件化体系,以及端到端组件的概念,帮助读者理解组件化的实施路径选择。 最后,书中鼓励读者从不同角度思考问题,如前端和后端的模式化程度、与其他系统的集成方式、视图的变更和复用程度,以及团队成员的技能状况等,以促进更全面的决策。通过引用苏轼的诗句,作者强调了观察问题的多元视角对于理解前端架构的重要性。 总结来说,这本书为前端开发者提供了一个全面的指南,无论你是初学者还是经验丰富的开发者,都能从中受益,提升你的前端架构设计能力,更好地应对大前端时代的挑战。

SELECT PIS.SHOW_FLT_DETAIL AS SHOW_FLT_DETAIL -- new , PIS.SHOW_AWB_DETAIL AS SHOW_AWB_DETAIL -- new , PIS.DISPLAY_AIRLINE_CODE AS CARRIER_CODE , DECODE(PIS.REVERT_FLOW,'N',PIS.FLOW_TYPE,DECODE(PIS.FLOW_TYPE,'I','E','I')) AS FLOW_TYPE , PIS.SHIP_TO_LOCATION AS SHIP_TO_LOCATION , PIS.INVOICE_SEQUENCE AS INVOICE_SEQUENCE , PFT.FLIGHT_DATE AS FLIGHT_DATE , PFT.FLIGHT_CARRIER_CODE AS FLIGHT_CARRIER_CODE , PFT.FLIGHT_SERIAL_NUMBER AS FLIGHT_SERIAL_NUMBER , PFT.FLOW_TYPE AS AIRCRAFT_FLOW , FAST.AIRCRAFT_SERVICE_TYPE AS AIRCRAFT_SERVICE_TYPE , PPT.AWB_NUMBER AS AWB_NUMBER , PPT.WEIGHT AS WEIGHT , PPT.CARGO_HANDLING_OPERATOR AS CARGO_HANDLING_OPERATOR , PPT.SHIPMENT_PACKING_TYPE AS SHIPMENT_PACKING_TYPE , PPT.SHIPMENT_FLOW_TYPE AS SHIPMENT_FLOW_TYPE , PPT.SHIPMENT_BUILD_TYPE AS SHIPMENT_BUILD_TYPE , PPT.SHIPMENT_CARGO_TYPE AS SHIPMENT_CARGO_TYPE , PPT.REVENUE_TYPE AS REVENUE_TYPE , PFT.JV_FLIGHT_CARRIER_CODE AS JV_FLIGHT_CARRIER_CODE , PPT.PORT_TONNAGE_UID AS PORT_TONNAGE_UID , PPT.AWB_UID AS AWB_UID , PIS.INVOICE_SEPARATION_UID AS INVOICE_SEPARATION_UID , PFT.FLIGHT_TONNAGE_UID AS FLIGHT_TONNAGE_UID FROM PN_FLT_TONNAGES PFT , FZ_AIRLINES FA , PN_TONNAGE_FLT_PORTS PTFP , PN_PORT_TONNAGES PPT , FF_AIRCRAFT_SERVICE_TYPES FAST , SR_PN_INVOICE_SEPARATIONS PIS --new , SR_PN_INVOICE_SEP_DETAILS PISD--new , SR_PN_INV_SEP_PORT_TONNAGES PISPT --new WHERE PFT.FLIGHT_OPERATION_DATE >= trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN ADD_MONTHS(SYSDATE,-1) ELSE ADD_MONTHS(:rundate,-1) END, 'MON') AND PFT.FLIGHT_OPERATION_DATE < trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END, 'MON') AND PFT.TYPE IN ('C', 'F') AND PFT.RECORD_TYPE = 'M' AND (PFT.TERMINAL_OPERATOR NOT IN ('X', 'A') OR (PFT.TERMINAL_OPERATOR <> 'X' AND FA.CARRIER_CODE IN (SELECT * FROM SPECIAL_HANDLING_AIRLINE) AND PPT.REVENUE_TYPE IN (SELECT * FROM SPECIAL_REVENUE_TYPE) AND PPT.SHIPMENT_FLOW_TYPE IN (SELECT * FROM SPECIAL_SHIPMENT_FLOW_TYPE) AND PFT.FLIGHT_OPERATION_DATE >= (select EFF_DATE from SPECIAL_HANDLING_EFF_DATE) )) AND PFT.DELETING_DATETIME IS NULL AND FA.AIRLINE_UID = PFT.AIRLINE_UID AND FA.DELETING_DATETIME IS NULL AND PTFP.FLIGHT_TONNAGE_UID = PFT.FLIGHT_TONNAGE_UID AND PTFP.RECORD_TYPE = 'M' AND PTFP.DELETING_DATETIME IS NULL AND PPT.TONNAGE_FLIGHT_PORT_UID (+)= PTFP.TONNAGE_FLIGHT_PORT_UID AND PPT.RECORD_TYPE (+)= 'M' AND PPT.DISCREPANCY_TYPE (+)= 'NONE' AND PPT.ADJUSTMENT_INC_FLAG (+)= 'Y' AND PPT.DELETING_DATETIME (+) IS NULL AND FAST.AIRCRAFT_SERVICE_TYPE_UID = PFT.AIRCRAFT_SERVICE_TYPE_UID AND FAST.DELETING_DATETIME IS NULL AND PIS.TEMPORAL_NAME = TO_CHAR((CASE :rundate --new WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END ), 'YYYYMM') || '00' AND PIS.INVOICE_SEPARATION_UID = PISD.INVOICE_SEPARATION_UID --new AND PISD.INVOICE_SEP_DETAIL_UID = PISPT.INVOICE_SEP_DETAIL_UID --new AND PISPT.PORT_TONNAGE_UID = PPT.PORT_TONNAGE_UID --new AND PIS.PRINT_SUPPORTING_DOC = 'Y';上面是oracle的写法,请转成spark SQL的写法。

2023-06-02 上传