博客
Blog

2020年09月28日

第16次公司内部学习会

 

在8月最后一个周五,举行了第16次学习会。

 

题目是「Apex控制器和Lightning组件」以及「Puppeteer」。

两者都是从最基本的开始说明,因此浅显易懂。

 

试着用Apex控制器制作Lightning组件吧

通过使用salesforce的Apex控制器,可以制作Lightning组件。制作步骤如下:

1. 打开开发者控制台。
2. 选择[File]|[New]|[Lightning Component]。
3. 给组件命名。
4. 在[Description]里追加组件的详细内容。
5. 在[Component Configuration] 部分选择可选内容。
※通过该设置,可简单创建例如Lightning页面或Lightning Experience、Salesforce移动应用程序的QuickAction或导航项目等特定用途的组件或应用程序。(Lightning bundle设定)
6. 单击[Submit]创建组件。

组件bundle

Lightning组件包含以下元素
・组件——bundle内唯一的必须资源。
・CSS样式——包含组件的样式。
・控制器——包含处理组件内事件的客户端控制器的方法。
・设计——Lightning应用创建器、Lightning页面、社区创建器或Flow Builder中使用的组件所需的文件。
・文档——说明、示例代码及组件示例等参考
・渲染器——覆盖默认组件显示的客户端渲染器。
・helper——可供组件调用的JavaScript函数
・SVG文件——Lightning的Application Builder或Community builder中使用的自定义图标资源。

使用表达式

若使用表达式、可以一边进行计算、一边访问组件标记中的Private属性值和其他数据。
语法示例:
  • {!expression}
  • 值Provider

    与对象中属性或方法的封装相同,对相关值也能进行封装。
    ・v (View) :组件的属性集合。
    ・c (Controller):组件控制器。

    组件事件处理

    handler组件中使用< aura:handler > 标记。
  • < aura:handler action="{!c.doInit}"/ >
  • 初始化时的Action调用

    组件:
  • < aura:handler name="init" value="{!this}" action="{!c.doInit}"/ >

  • 控制器:
    ({
      doInit: function(cmp) {
      }
    })

    创建Apex服务器端控制器

    1. 把@AuraEnabled标注到方法上、使方法作为服务器Action被公开。
    public with sharing class CreateRecordController {
      @AuraEnabled
      public static String create(Id sampleId) {
       return null;
      }
    }
    2. 将controller系统属性添加到标签中,将组件链接到控制器。
  • < aura:component controller="CreateRecordController" implements="force:lightningQuickActionWithoutHeader,force:hasRecordId" >

  • 向Apex控制器传递数据
    用action.setParams();设置传递到服务器侧控制器的数据。
    var action = cmp.get("c.create");
    action.setParams
    ({
    "sampleId": cmp.get("v.recordId")
    });

    从Apex服务器侧控制器返回数据
    返回的数据类型
    简单型 — String、Integer等基本型
    sObject — 标准对象类型和自定义对象类型
    Apex — Apex类的实例
    Collection

    客户端的回调
    action.setCallback();在客户端控制器上设置回调函数,可在服务器端的Action完成后被调用。

    action.setCallback(this,function(response) {
      var state = response.getState();
      if (state === "SUCCESS") {
      }
    })

    服务器端的Action队列配置
    通过$A.enqueAction(action);将服务器端控制器的Action添加到执行队列中。


    官方的示例代码和网站对Lightning组件的使用方法和结构等进行了简单易懂的说明。

    puppeteer基础

    Puppeteer是一个可以在浏览器中自动处理的工具。

    可以用命令行的方式,在浏览器里执行各种操作。

    URL跳转
    await page.goto(URL);
    单击按钮
    await page.click('选择器');
    输入
    await page.type('选择器', '在此输入内容')
    提取信息
    text = await page.$('选择器'); newsStr = await page.evaluate(text => text.textContent, text);
    等待显示
    await page.waitForSelector('选择器', {visible: true}); await page.waitFor(3000);
    键盘键入
    await page.keyboard.press('Enter');
    如果使用选择器,可以简单地获得特定的DOM元素。利用这个可以使所有网站的操作自动化。

    运用

    作为应用案例,在爬取网页,基于新闻标题语素分析做常用语句分析时,用到了这个工具。
    使用语素分析库janome,可以做语素分析,词频分析。

    Page top