Diff between window.open() and BrowserWindow


I have have found at least 4 four ways to open windows.

  1. In a simple “” tag by using 'target= “_blank” in renderer process.
    <p><a href="pages/enrollment.html" target="_blank">Fee Items</a></p>
  2. Have the main process use “new BrowserWindow()” Ipc.sendSync(‘somefunction’, parameter)
    ipc.sendSync('load-page', 'menu.html')
  3. Use window.open() in the renderer - works well! Always opens as a child.
    myWindow=window.open(fullName, "", "width=500, height=500, center=false, x = 420, y = 50")
  4. Again using in renderer side use remote.BrowserWindow.
    const {BrowserWindow} = require(‘electron’).remote
    let win = new BrowserWindow({parent: thisWin, width: 800, height: 600})
    win.loadURL(file://long path)

I’d like to know the differences between them what is recommended way?